Pergunta

Uma tabela lista vários eventos onde cada evento tem quatro atributos (colunas), chame-os de A, B, C, P

Seria simples pivotar para obter uma tabela com colunas para A, B, C, P=1, P=2, P=3, etc.

No entanto, preciso que as colunas sejam A, B, C, P<1, P<2, P<3, etc.

Em outras palavras, se uma linha da maneira "simples" fosse X, Y, Z, 7, 3, 5, 2, então o que eu realmente preciso é X, Y, Z, 7, 10, 15, 17 porque qualquer P menosque N também é menor que N+1.

Eu sei que posso calcular os valores (X, Y, Z, 7, 10, 15, 17), carregá-los em uma tabela temporária e dinamizar isso, mas talvez haja algo simples que meus talentos SQL não reconheçam imediatamente?

Se for importante, o resultado terminará no SSRS.

Foi útil?

Solução

Se eu entendi corretamente, então isso deve funcionar.

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

Isso não é dinâmico.Por exemplo, se você tiver uma linha com P=4, ela não adicionará uma linha para P<5.Também está usando estritamente < e não <=.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top