我有一个像这样的3列表: 的 COL1,COL2,COL3
我必须对这三列进行分组并计算计数。 我完成了这个小组,如下所示:
{ name: "isactive",
title: "IsActive",
type:"checkbox",
align: "center",
sorting: false,
filtering: false},
col2中只有两个可能的值是PRE和COM 但我需要的是一个小的变化,如下所示:
select col5,col3,col2, count(*) from mytable group by col5,col3,col2
COL5 COL3 COL2 COUNT(*)
MOVIL A PRE 81.00
MOVIL B COM 466.00
MOVIL A COM 947.00
我相信PIVOT应该用于此。 但我不是SQL的专家。有人可以帮忙吗?
答案 0 :(得分:2)
你可以像这样使用PIVOT(我认为col2只有两个值,而不是col3):
SELECT *
FROM (select col5,col3,col2, count(*) from mytable group by col5,col3,col2)
PIVOT(MAX(CNT) FOR COL2 IN ('PRE','COM'));
答案 1 :(得分:1)
select
col5,
col3,
SUM(CASE WHEN col2='PRE' THEN count ELSE 0 END) as PRE,
SUM(CASE WHEN col2='COM' THEN count ELSE 0 END) as COM
FROM (select col5,col3,col2, count(*) as count
from mytable group by col5,col3,col2) as sub
GROUP BY col5, col3
喜欢这个吗?
答案 2 :(得分:0)
使用Pivot:
select col5 ,col3,[PRE],[COM]
from
(
select col5,col3,col2, count(*) as count
from #Mytable group by col5,col3,col2
)c
pivot
(
max(count)
FOR col2 IN ([com],[pre])
)as p
如果您有任何疑虑,请告诉我。