问题描述
我希望以一种特定的格式将数据分组到一个列上,它将结果显示为行,并且将另一列分组,并在与该行分组相对应的行中显示结果。
数据的格式为:
id type insertdate forUser
------------------------------------------
1 Suit 2020-08-24 13:16:42.000 sw
2 Suit 2020-08-24 13:16:49.000 sw
3 Suit 2020-08-24 00:46:31.773 sw
4 jacket 2020-08-24 13:17:15.000 sw
5 jacket 2020-08-24 13:17:35.000 sw
6 jacket 2020-08-24 00:47:43.620 sw
7 jacket 2020-08-24 00:48:42.470 SK
8 Blazer 2020-08-24 13:19:19.000 SK
9 Blazer 2020-08-24 00:49:00.097 SK
10 Blazer 2020-08-24 00:49:07.130 SK
11 Blazer 2020-08-24 13:20:34.000 SK
12 indo 2020-08-24 13:21:15.000 SK
13 indo 2020-08-24 13:21:46.000 SK
14 indo 2020-08-24 13:21:59.000 SK
,我想要这种格式的结果:
forUser suit jacket blazer indo
--------------------------------
SK 0 1 4 3
sw 3 3 0 0
我不知道如何实现它,我们可以在count子句中使用count吗?
select forUser,count(* where type='suit')
from tblTurnSys
group by forUser
解决方法
您可以使用条件聚合:
select forUser,sum(case when type = 'suit' then 1 else 0 end) as suit,sum(case when type = 'jacket' then 1 else 0 end) as jacket,sum(case when type = 'blazer' then 1 else 0 end) as blazer,sum(case when type = 'indo' then 1 else 0 end) as indo
from t
group by forUser;