Я пытаюсь объединить оба этих запроса в один, поэтому у меня есть один запрос на выборку, чтобы вернуть одну строку с количеством таблиц и максимальной датой. Я не могу найти простой способ сделать это. Есть идеи? Спасибо
select count(*) from ods.ADDRESS
select max(last_modified)
from
(
select
CASE WHEN MODIFY_DT IS NULL THEN CREATE_DT
ELSE MODIFY_DT END AS LAST_MODIFIED
FROM ODS.ADDRESS
)
Ну, просто объедини их :D
select count(*), max(
CASE WHEN MODIFY_DT IS NULL THEN CREATE_DT
ELSE MODIFY_DT END ) AS LAST_MODIFIED
from ods.ADDRESS
Вот один из вариантов:
SELECT
COUNT(*) AS cnt,
MAX(CASE WHEN MODIFY_DT IS NULL THEN CREATE_DT ELSE MODIFY_DT END) AS LAST_MODIFIED
FROM ODS.ADDRESS;
Обратите внимание, что вам даже не нужен подзапрос. Мы также можем попробовать упростить вышеизложенное, используя COALESCE
:
SELECT
COUNT(*) AS cnt,
MAX(COALESCE(MODIFY_DT, CREATE_DT)) AS LAST_MODIFIED
FROM ODS.ADDRESS;
Условная агрегация — один из способов сделать это:
select COUNT(*),
MAX(CASE WHEN MODIFY_DT IS NULL
THEN CREATE_DT
ELSE MODIFY_DT
END) AS LAST_MODIFIED
from ODS.ADDRESS a;