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
如果您的标记字段包含 1
或 0
,并且您正在寻找任何 1
,您可以这样做:
,case when
sum(TAB_flag + TOP_SPOT_flag + PAGE_flag + DOWNLOAD_flag) > 0
THEN 1 ELSE 0 END AS any_p_flag
下面的 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
如果您的标记字段包含 1
或 0
,并且您正在寻找任何 1
,您可以这样做:
,case when
sum(TAB_flag + TOP_SPOT_flag + PAGE_flag + DOWNLOAD_flag) > 0
THEN 1 ELSE 0 END AS any_p_flag