【发布时间】:2018-04-21 08:21:36
【问题描述】:
我有这个问题:
SELECT
CASE
WHEN COUNT(DISTINCT Q.FIELD_1) > 1 AND MAX(Q.FIELD_1) <> 'N/A' THEN 'VALUE_010' ELSE 'VALUE_011' END AS FIELD_1,
CASE
WHEN COUNT(DISTINCT Q.FIELD_2) = 10 AND MAX(Q.FIELD_2) <> 'N/A' THEN 'VALUE_020'
WHEN COUNT(DISTINCT Q.FIELD_2) = 100 AND MAX(Q.FIELD_2) <> 'N/A' THEN 'VALUE_021'
ELSE 'VALUE_022' END AS FIELD_2
FROM (
SELECT
A.FIELD_1,
B.FIELD_2
FROM TABLE_A a
JOIN TABLE_B b
ON a.FIELD_X = b.FIELD_Y
GROUP BY
A.FIELD_1,
B.FIELD_2
) Q
我想要的是在选择的 CASE/WHEN 条件中使用 COUNT 或 MAX 等聚合函数。实际上我得到了错误:“>附近的语法不正确”。 有可能还是我应该尝试不同的方法?
【问题讨论】:
-
为什么不在子查询中做count(distinct ...)?
-
编辑问题并提供示例数据和所需结果。
-
@JNevill 因为我需要在 CASE/WHEN 条件下组合更多的聚合函数。我已经更新了我的问题。
-
你能发布你得到的整个错误吗?查询看起来不错。
标签: sql-server tsql case aggregation case-when