Объединение количества / макс. Выберите условия в одно - PullRequest
1 голос
/ 08 апреля 2019

Я пытаюсь объединить оба этих запроса в один, поэтому у меня есть один запрос на выборку, чтобы вернуть одну строку с количеством таблиц и максимальной датой.Я не могу придумать простой способ сделать это.Есть идеи?Спасибо

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
)

Ответы [ 3 ]

3 голосов
/ 08 апреля 2019

Вот один из вариантов:

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;
3 голосов
/ 08 апреля 2019

Условное агрегирование - один из способов сделать это:

select COUNT(*), 
       MAX(CASE WHEN MODIFY_DT IS NULL 
                THEN CREATE_DT
                ELSE MODIFY_DT 
           END) AS LAST_MODIFIED
from ODS.ADDRESS a;
2 голосов
/ 08 апреля 2019

Ну, просто объедините их: D

select count(*), max(
CASE WHEN MODIFY_DT IS NULL THEN CREATE_DT
ELSE MODIFY_DT END ) AS LAST_MODIFIED
  from ods.ADDRESS
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...