【发布时间】:2020-06-25 23:55:30
【问题描述】:
我正在尝试在不运行多项选择的情况下聚合报告的多个列。
这是一个位列,我想为每列显示 2 行(是行和否行)。
想要的结果是这样的:
|Alimony |Married |HasCustody
Yes |3 |2 |4
No |2 |3 |1
我尝试做 SUM(将 IsPayingAlimony 转换为 tinyint)。我查看了枢轴、非枢轴、立方体、汇总。我认为我最接近的是按组分组。但即使使用分组集,我也无法到达两行。 这是我的sql:
CREATE TABLE ClientStatus
( ClientID INT NOT NULL,
IsPayingAlimony BIT NOT NULL,
IsMarried BIT NOT NULL,
HasCustody BIT NOT NULL,
CONSTRAINT [PK_Status] PRIMARY KEY NONCLUSTERED
(
[ClientID] ASC
)
)
;
INSERT INTO ClientStatus
(ClientID, IsPayingAlimony, IsMarried, HasCustody)
VALUES (1,0,0,0)
,(2,1,1,1)
,(3,1,0,1)
,(4,0,1,1)
,(5,1,0,1)
;
SELECT * FROM ClientStatus
这里是group by grouping sets查询。
SELECT IsPayingAlimony, IsMarried, HasCustody, COUNT(*) AS Records
FROM ClientStatus
GROUP BY Grouping Sets ((IsPayingAlimony), (IsMarried), (HasCustody))
这是结果。恐怕我想多了(想多了?!)这个,但我不知道如何把它降到 2 行。
IsPayingAlimony |IsMarried |HasCustody |Records
NULL |NULL |0 |1
NULL |NULL |1 |4
NULL |0 |NULL |3
NULL |1 |NULL |2
0 |NULL |NULL |2
1 |NULL |NULL |3
任何帮助或建议将不胜感激。
【问题讨论】:
标签: sql-server