2017-03-03 38 views
1

我有如下表格。如果我需要創建另一個表,如輸出中所示,我該怎麼做?將數據從一個表中的列拆分爲另一個表中的多個行

CREATE TABLE TestTable 
    (JobID int, isAllowType1 bit, value1 int, isAllowType2 bit, value2 int) 
; 

INSERT INTO TestTable 
    (JobID, isAllowType1, value1, isAllowType2, value2) 
VALUES 
    (1, 1, 11, 0, 111), 
    (2, 0, 22, 1, 222), 
    (3, 1, 33, 0, 333) 
; 

--output

JOBID isAllow Value  Type 
    1  1  11  Type1 
    1  0  111  Type2 
    2  0  22  Type1 
    2  1  222  Type2 
    3  1  33  Type1 
    3  0  333  Type2 
+2

是否需要另一張桌子?你不能使用視圖或存儲過程嗎? –

+0

我正在重構一個有許多列的表,如isAllow1,isAllow2,isAllow3以及各種不同的值。 – GOMY

回答

2

您可以在Type1和Type2記錄單獨使用查詢,並使用union all操作的結果結合起來:

SELECT jobid, isAllowType1 AS isAllow, value1 AS value, 'Type1' AS type 
FROM testtable 
UNION ALL 
SELECT jobid, isAllowType1 AS isAllow, value1 AS value, 'Type2' AS type 
FROM testtable 
0

爲了增加Mureinik的答案,你可以用UNION ALL這樣的結果創建一個新的表格:

select * 
into new_table 
from (
    select JobID, 
     isAllowType1 isAllowType, 
     value1 value, 
     'Type1' Type 
    from TestTable 

    union all 

    select JobID, 
     isAllowType2, 
     value2, 
     'Type2' 
    from TestTable 
    ) t 
相關問題