Domanda

A table lists multiple events where each event has four attributes (columns), call them A, B, C, P

It would be simpleto pivot to get a table with columns for A, B, C, P=1, P=2, P=3, etc.

However, I need the columns to be A, B, C, P<1, P<2, P<3, etc.

In other words, if a row of the "simple" way were X, Y, Z, 7, 3, 5, 2 then what I actually need is X, Y, Z, 7, 10, 15, 17 because any P less than N is also less than N+1.

I know I can compute the values (X, Y, Z, 7, 10, 15, 17), load them into a temporary table, and pivot that, but maybe there's something simple that my SQL talents don't recognize immediately?

If it matters, the result will end up in SSRS.

È stato utile?

Soluzione

If I understand you correctly, then this should work.

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

This is not dynamic. For example, if you have a row in there with P=4 then it will not add a row for P<5. It's also using strictly < and not <=.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top