我有以下查询:转换行的列标题与合计
SELECT
g.Gender,
a.AgeGroup,
count(*) as Count
FROM
client c
INNER JOIN AgeGroup a
ON c.age BETWEEN a.StartRange AND a.EndRange
INNER JOIN Gender G on
C.GenderID = G.GenderID
group by
g.Gender,
a.AgeGroup
order by AgeGroup, Gender
其结果如下:
Gender AgeGroup Count
Male <=25 4
Unknown <=25 2
Female >35 2223
Male >35 6997
Transgender >35 43
Unknown >35 2
Female 26-35 413
Male 26-35 590
Transgender 26-35 5
什么我需要尝试做虽然是转换性别列到列标题并包括总计。
AgeGroup Male Female Trans Unknown Total
<= 25: 4 0 0 2 6
26 - 35: 590 413 5 0 1008
> 35: 6997 2223 43 2 9265
Total: 7591 2636 48 4 10279
我走了这么远:
SELECT *
FROM (
SELECT
g.Gender as [Gender],
a.AgeGroup
FROM
client c
INNER JOIN AgeGroup a
ON c.age BETWEEN a.StartRange AND a.EndRange
INNER JOIN Gender G on
C.GenderID = G.GenderID
) as s
PIVOT
(
COUNT(Gender)
FOR [Gender] IN (Male,Female,Transgender,Unknown)
)AS pvt
返回此:
AgeGroup Male Female Transgender Unknown
<=25 4 0 0 2
26-35 590 413 5 0
>35 6997 2223 43 2
但我没有汇总。
有没有一种方法可以做到这一点?
尝试查找_pivot与count_,大量[网站上的示例](http://stackoverflow.com/search?q=%5Bsql-server%5D+pivot+with+count)。 – Tanner
如果可能,请尝试将所有内容都作为文本发布。在您的案例中(预期和实际结果)。也尝试包括示例DDL,DML语句 – TheGameiswar
感谢@Tanner,设法弄清楚并更新了我的文章。我无法弄清楚如何获得总数。 – Philip