Условное агрегирование является одним из способов сделать это:
select COUNT(*),
MAX(CASE WHEN MODIFY_DT IS NULL
THEN CREATE_DT
ELSE MODIFY_DT
END) AS LAST_MODIFIED
from ODS.ADDRESS a;
Шаблоны могут быть высоко оптимизированы во время компиляции без потребности в виртуальных функциях. Много шаблонных приемов может считаться полиморфизмом времени компиляции. Так как Вы знаете во время компиляции, какие поведения Вы хотите, почему необходимо заплатить за вызов виртуальной функции каждый раз, Вы используете класс. В качестве награды много шаблонного кода может быть легко встроено для устранения даже самого основного вызова функции наверху.
Кроме того, шаблоны в C++ чрезвычайно мощны и гибки - они, как показывали, были Тьюрингом полный язык самостоятельно. Существуют некоторые вещи, которые легко сделать с шаблонами, которые требуют намного большего количества работы с полиморфизмом во время выполнения.
Шаблоны позволяют Вам делать универсальную версию алгоритма. Универсальная версия контейнера. Вы больше не должны волноваться о типах и что Вы производите потребность больше не быть связанными с типом. Повышение является набором библиотек, который пытается обратиться к потребностям большого разнообразия людей, использующих C++ в свое время для дневных жизней.