sql 条件求和语句

sql conditional sum statement

下面的 sql 条件求和语句一直向我抛出错误,我不确定为什么。 当任何基础标志为 1 时,逻辑应该创建一个标志,因此总和 >=1.

Error message: mismatched nput '(' expecting <EOF>
,case when (sum(case when (TAB_flag = 1) OR
(TOP_SPOT_flag = 1) OR
(PAGE_flag = 1) OR
(DOWNLOAD_flag = 1) >= 1)) THEN 1 ELSE 0 END AS any_p_flag

你有两个 case 表达式。您需要在内部 case 表达式中输入 then/else。您可能不需要内部案例表达式,只需对您的字段求和,没有数据样本我无法判断。以下应该有效:

,case when (sum(
  case when (TAB_flag = 1) OR
  (TOP_SPOT_flag = 1) OR
  (PAGE_flag = 1) OR
  (DOWNLOAD_flag = 1) then 1 else 0 end 
>= 1)
) THEN 1 ELSE 0 END AS any_p_flag

如果您的标记字段包含 10,并且您正在寻找任何 1,您可以这样做:

,case when 
sum(TAB_flag + TOP_SPOT_flag + PAGE_flag + DOWNLOAD_flag)  > 0
THEN 1 ELSE 0 END AS any_p_flag