案例陈述中的选择陈述

问题描述

我想根据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