SQL - поворот, где строки одной таблицы являются заголовками столбцов другой - PullRequest
1 голос
/ 08 ноября 2019

Я хочу создать таблицу (показанную ниже) в форме матрицы, в которой заголовки столбцов являются переменными.

@ Действует как действует

enter image description here

@ WCTable AS WCT

enter image description here

Временная таблица, полученная из @ProductionTable AS PT

enter image description here

Вывод, который я ищу, выглядит следующим образом. По сути, я хочу, чтобы ACT.AC работал как заголовки столбцов, WCT.WC работал и считал, сколько было ActFin 6 ноября. Цвет показывает соответствующие ассоциации. Остальные я объединю после, не слишком заботясь о NULL или 0.

enter image description here

Пока запрос (он не выполняется в операторе FOR)

SELECT * FROM  
(
    SELECT
        PT.ParentPart,
        ACT.AC,
        WCT.WC,
        PT.ActFin 
    FROM @ProductionTable AS PT
        INNER JOIN @WCTable AS WCT ON WCT.WC = PT.WC
        INNER JOIN @ACTable AS ACT ON PT.AC = ACT.AC
) t
PIVOT(
    COUNT(CASE
            WHEN
                PT.ActFin > '2019-11-06' --count
            THEN
                1
            END)
    FOR ACT.AC IN ( --this is where things fall apart
        '54',
        '53',
        '52')
)

Возможно ли это?

1 Ответ

0 голосов
/ 08 ноября 2019

Столбцы в предложении FOR должны быть заключены в []:

SELECT * FROM  
(
    SELECT
        PT.ParentPart,
        ACT.AC,
        WCT.WC,
        PT.ActFin 
    FROM @ProductionTable AS PT
        INNER JOIN @WCTable AS WCT ON WCT.WC = PT.WC
        INNER JOIN @ACTable AS ACT ON PT.AC = ACT.AC
) t
PIVOT(
    COUNT(CASE
            WHEN
                PT.ActFin > '2019-11-06' --count
            THEN
                1
            END)
    FOR ACT.AC IN ( --this is where things fall apart
        [54],
        [53],
        [52])
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...