问题描述
我想根据CASE中的条件编写一条select语句。例如,如果(今天是工作日),则x其他y
我在流分析查询中写了以下语句
SELECT
CASE
WHEN DATEPART(WEEKDAY,EventTime) in (1,7) THEN SELECT count(*) as Eventcount
INTO output
FROM Input
Group By tumblingwindow(minute,5)
Having Count(*) < 10
ELSE SELECT count(*) as Eventcount
INTO output
FROM Input
Group By tumblingwindow(minute,5)
Having Count(*) > 10
END as DayStatus
INTO Output1
FROM Input
我也尝试了以下查询,但仍然无法正常工作 选择( 案件 当(1,7)中的DATEPART(WEEKDAY,EventTime)时 ( SELECT count()作为事件计数 INTO EmailADOutputEventsEprism 来自IE_Eprism 按翻滚窗口分组(分钟,5) 计数()> 10 ) ELSE“平日” END)作为DayStatus
FROM IE_Date
我在上述声明中遇到了错误。 我该如何实现? 预先谢谢你。
解决方法
在SQL中,不能基于SELECT子句中的条件选择整个行集。 可以通过分解通用表达式部分或编写单独的查询,然后使用UNION或JOIN将结果合并为单个输出,来完成相似计算的合并。
在以问题为优先的通用表达式分解方法中查看特定查询是一种更简单的方法:
WITH agg AS (
SELECT [day] = DATEPART(WEEKDAY,EventTime),count = Count(*)
FROM Input
GROUP BY TumblingWindow(minute,5)
)
SELECT count
FROM agg
WHERE CASE WHEN [day] in (1,7) and count < 10 THEN 1
WHEN [day] in (2,3,4,5,6) and count > 10 THEN 1
ELSE 0
END = 1