2

一张表列出了多个事件,其中每个事件有四个属性(列),分别称为 A、B、C、P

很容易通过旋转来获得一个包含 A、B、C、P=1、P=2、P=3 等列的表。

但是,我需要列是 A、B、C、P<1、P<2、P<3 等。

换句话说,如果“简单”方式的一行是 X, Y, Z, 7, 3, 5, 2 那么我实际需要的是 X, Y, Z, 7, 10, 15, 17 因为任何 P 少比 N 也小于 N+1。

我知道我可以计算值(X、Y、Z、7、10、15、17),将它们加载到一个临时表中,然后旋转它,但也许有一些简单的东西我的 SQL 人才无法立即识别?

如果重要,结果将最终出现在 SSRS 中。

4

1 回答 1

1

如果我理解正确,那么这应该有效。

SELECT
    A,
    B,
    C,
    SUM(CASE WHEN P < 1 THEN 1 ELSE 0 END) AS P1,
    SUM(CASE WHEN P < 2 THEN 1 ELSE 0 END) AS P2,
    SUM(CASE WHEN P < 3 THEN 1 ELSE 0 END) AS P3,
    SUM(CASE WHEN P < 4 THEN 1 ELSE 0 END) AS P4
FROM
    Events
GROUP BY
    A,
    B,
    C

这不是动态的。例如,如果你有一行 P=4,那么它不会为 P<5 添加一行。它也严格使用 < 而不是 <=。

于 2010-07-26T16:58:27.560 回答