请考虑数据:
Id Group Value
-----------------------------------
1 1 10
2 1 12
3 1 10
4 2 90
5 2 10
6 3 30
7 4 12
8 4 11
9 5 10
10 5 11
我希望Group By
对此数据1,2,3
位于一个组中,4,5
位于另一个组中。我如何使用SQL Server
?
感谢
修改1)
我想要这个结果:
Groups Count
-----------------------------------------
Group for 1,2,3 6
Group for 4,5 4
答案 0 :(得分:3)
这也可以做你想要的:
SELECT 'Group for 1,2,3' AS GROUPS
, COUNT(Id) AS Count
FROM Foo
WHERE [Group] IN (1,2,3)
UNION ALL
SELECT 'Group for 4,5' AS GROUPS
, COUNT(Id) AS Count
FROM Foo
WHERE [Group] IN (4,5)
http://sqlfiddle.com/#!6/cdb82/2/0
当然,只有当你知道你想要哪些群体时,这才有效。
答案 1 :(得分:1)
我正在使用outer apply
,因此您不会将代码复制到群组
select
C.Group_Name, count(*)
from Table1
outer apply
(
select
case
when C.[Group] in (1, 2, 3) then 'Group for 1, 2, 3'
when C.[Group] in (4, 5) then 'Group for 4, 5'
end as Group_Name
) as C
group by C.Group_Name
您也可以使用子查询
select
C.Group_Name, count(*)
from
(
select
case
when T.[Group] in (1, 2, 3) then 'Group for 1, 2, 3'
when T.[Group] in (4, 5) then 'Group for 4, 5'
end as Group_Name,
T.Value,
T.Id
from Table1 as T
) as C
group by C.Group_Name