自定义组通过并将一些记录放在一个组中

时间:2012-11-07 12:18:02

标签: sql sql-server sql-server-2008

请考虑数据:

 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

2 个答案:

答案 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
相关问题