【发布时间】:2020-06-30 16:07:46
【问题描述】:
TSQL - SQL 服务器
我正在根据非常具体的要求构建报告。我正在尝试将多个键 ID 组合成单行,但某些列中的值不同,因此 GROUP BY 不起作用。
SELECT count(tt.Person_ID) as CandCount, tt.Person_ID,
CASE e.EthnicSuperCategoryID WHEN CandCount > 1 THEN 10 ELSE e.EthnicSuperCategoryID END as EthnicSuperCategoryID,
CASE e.Ethnicity_Id WHEN 1 THEN 1 ELSE 0 END as Black ,
CASE e.Ethnicity_Id WHEN 2 THEN 1 ELSE 0 END as White ,
CASE e.Ethnicity_Id WHEN 3 THEN 1 ELSE 0 END as Asian,
etc
FROM T_1 TT
JOINS
WHERE
GROUP
消息 102,级别 15,状态 1,第 4 行 '>' 附近的语法不正确。
这是结果(没有第一个 CASE)。注意人 3 陈述了多个种族。
SELECT count(tt.Person_ID) as CandCount, tt.Person_ID,
CASE e.Ethnicity_Id WHEN 1 THEN 1 ELSE 0 END as Black ,
CASE e.Ethnicity_Id WHEN 2 THEN 1 ELSE 0 END as White ,
CASE e.Ethnicity_Id WHEN 3 THEN 1 ELSE 0 END as Asian,
etc
FROM T_1 TT
JOINS
WHERE
GROUP
这是意料之中的,但目标是将多个种族分配给 Ethnicity_Id 为 10(多个)。我还希望它们在一行中分组。
所以最终的结果应该是这样的:
所以我的问题有两个方面。如果候选人有超过 2 个种族,则将记录分配给 Ethnicity_Id 为 10。我还需要将重复的人员 ID 分组到一行中,同时显示列的所有结果。
【问题讨论】:
标签: sql sql-server tsql pivot reporting