Как объединить несколько значений столбцов в один столбец? - PullRequest
1 голос
/ 26 сентября 2011

У меня есть исходный отчет, который выглядит как

Name Q1 Q2 Q3 Q4
A    1  2  3  4
B    5  6  7  8
C    9  0  1  2

Должен быть преобразован в следующий формат

Name Quarter Value
A    Q1      1
A    Q2      2
A    Q3      3
A    Q4      4 
and so on...

Я использую SSIS для ETL. Любые указатели без использования жестко закодированных значений в скрипте T-SQL?

1 Ответ

1 голос
/ 26 сентября 2011

Это было бы хорошим соответствием для UNPIVOT , но если вы не захотите сделать это динамическим SQL-оператором, я не вижу никакого способа обойти жесткое кодирование Quarters в операторе.

SQL Statement

SELECT  Name
        , Quarter
        , Value 
FROM    q 
UNPIVOT (
          Value FOR Quarter IN (Q1, Q2, Q3, Q4)
        ) u

Тестовый скрипт

;WITH q (Name, Q1, Q2, Q3, Q4) AS (
    SELECT 'A', 1, 2, 3, 4
    UNION ALL SELECT 'B', 5, 6, 7, 8
    UNION ALL SELECT 'C', 9, 0, 1, 2
)
SELECT  Name
        , Quarter
        , Value 
FROM    q 
UNPIVOT (
            Value FOR Quarter IN (Q1, Q2, Q3, Q4)
        ) u
...