我正在尝试将这两个查询合并为一个,所以我有一个选择查询以返回包含表计数和最大日期的一行。我不知道这样做的简单方法。有任何想法吗?谢谢
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
)
答案 0 :(得分:3)
这里是一种选择:
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;
答案 1 :(得分:3)
有条件的聚合是执行此操作的一种方法:
select COUNT(*),
MAX(CASE WHEN MODIFY_DT IS NULL
THEN CREATE_DT
ELSE MODIFY_DT
END) AS LAST_MODIFIED
from ODS.ADDRESS a;
答案 2 :(得分:2)
好吧,简单地将它们结合起来:D
select count(*), max(
CASE WHEN MODIFY_DT IS NULL THEN CREATE_DT
ELSE MODIFY_DT END ) AS LAST_MODIFIED
from ods.ADDRESS