每个ID的多个计数

时间:2015-03-30 19:28:10

标签: sql tsql count

我正试图解决这个问题,但遗憾的是我的方法都不奏效:

  • 我需要一个包含3列的表格:

    1. 的ItemID
    2. ItemID具有CostcentreID x
    3. 的数字个案
    4. ItemID具有CostcentreID y
    5. 的数字个案

SELECT ItemID, Count1, Count2 FROM Table

输出应该是:

- 的ItemID - 共1个记录 - 共2个记录

1       12      5
2        3      2

使用

时得到的结果

SELECT ItemdID, SUM(case when costc...),... FROM Table

是:

- 的ItemID - 共1个记录 - 共2个记录

1       12      0
2        3      0

由于GROUP BY语句。

无论如何在没有光标的情况下解决这个问题?

此外,还需要5个表的JOIN。

提前致谢!

1 个答案:

答案 0 :(得分:0)

我不确定连接需要什么,但这是第一部分。

DECLARE @table TABLE(ItemID INT, CostCentreID CHAR(1));

INSERT INTO @table
VALUES  (1,'X'),
        (1,'X'),
        (1,'Y'),
        (2,'X'),
        (2,'Y'),
        (2,'Y'),
        (2,'Y');

SELECT  ItemID,
        SUM(
                CASE
                    WHEN CostCentreID = 'X' THEN 1 ELSE 0
                END
            ) AS CostCentreX,
        SUM(
                CASE
                    WHEN CostCentreID = 'Y' THEN 1 ELSE 0
                END
            ) AS CostCentreY
FROM @table
GROUP BY ItemID

结果:

ItemID      CostCentreX CostCentreY
----------- ----------- -----------
1           2           1
2           1           3
相关问题