Как PIVOT, но значения не дискретны - PullRequest
2 голосов
/ 26 июля 2010

В таблице перечислены несколько событий, где каждое событие имеет четыре атрибута (столбца), назовите их A, B, C, P

Было бы просто получить сводную таблицу для столбцов для A, B, C, P = 1, P = 2, P = 3 и т. Д.

Однако мне нужно, чтобы столбцы были A, B, C, P <1, P <2, P <3 и т. Д. </p>

Другими словами, если строка «простого» пути была 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.

1 Ответ

1 голос
/ 26 июля 2010

Если я вас правильно понимаю, то это должно сработать.

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.Он также использует строго <, а не <=. </p>

...