【发布时间】:2018-09-13 01:15:57
【问题描述】:
请查看我的 sql 查询。
select
CASE
WHEN (SELECT COUNT(COL1) FROM FACT_ACTIVITY group BY FACT_ACTIVITY.COL2)>1
THEN (SELECT COUNT(COL3) FROM FACT_ACTIVITY)
WHEN (SELECT COUNT(COL1) FROM FACT_ACTIVITY group BY FACT_ACTIVITY.COL2)=1
THEN (SELECT COUNT(COL4) FROM FACT_ACTTIVITY)
END
,EXTRACT(year from fa.INC_START_DATETIME) AS YearOFF
,COUNT(fa.COL2) AS OffCount from FACT_ACTIVITY fa INNER JOIN
DIM_OFF_TYPE do ON fa.OFF_TYPE_ID = do.OFF_TYPE_ID
WHERE fa.OFF_TYPE_ID IN (24001) and YEAR(fa.INC_START_DATETIME) IN (2016,2017)
group by do.OFF_TYPE_DESCR,YEAR(fa.INC_START_DATETIME)
子查询以防 WHEN 给出很多行,但我希望子查询检查每个 FACT_ACTIVITY_ID 并查看 count(col2) >1 并执行 THEN 语句。
【问题讨论】:
-
那是一个case 表达式,而不是一个语句。
-
我使用的是 SQL Server 2008。
标签: sql sql-server group-by subquery case