2

表には複数のイベントがリストされており、各イベントには 4 つの属性 (列) があり、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 です。 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 に答える