我有一个场景,我想在分组数据后计算记录。 (实际方案包含多个表。)
create table tblXYZ
(
id int,
Age int,
Typ char
)
表包含此数据:
| ID | Age | Typ
------------------
| 1 | 20 | A
| 2 | 20 | A
| 3 | 21 | B
| 4 | 22 | B
| 5 | 22 | A
| 6 | 23 | B
| 7 | 23 | A
| 8 | 23 | A
| 9 | 25 | B
| 10 | 25 | B
| 11 | 25 | A
如果我按年龄申请分组,我会得到:
| Age | Typ_Count
-------------
| 20 | 2
| 21 | 1
| 22 | 2
| 23 | 3
| 25 | 3
但我想根据每个年龄段的每个特定类型得到typ_count。
期望的结果:
| Age | Typ_A_Count | Typ_B_Count
---------------------------------
| 20 | 2 | 0
| 21 | 0 | 1
| 22 | 1 | 1
| 23 | 2 | 1
| 25 | 1 | 2
感谢。
答案 0 :(得分:6)
您可以计算多个这样的类别:
SELECT
Age,
COUNT(CASE WHEN Typ = 'A' THEN 1 ELSE NULL END) AS CountTypA,
COUNT(CASE WHEN Typ = 'B' THEN 1 ELSE NULL END) AS CountTypB
FROM tblXYZ
GROUP BY Age
答案 1 :(得分:4)
SELECT Age,Typ
FROM tblXYZ
PIVOT
(
count (Typ) FOR Typ IN ('A','B')
)