2013-12-11 20 views
0

我有記錄,如表...插入記錄每一個獨特的列值

FileName  | A1 | A2 | A3 | 
TwinCity.fi  233.3 235.33 379.8 
CountryVil.fi 37.8    74.58 

,我需要插入一條記錄到另一個表中的每個文件名和唯一的值因此,對於上面我將插入...

TwinCity.fi 233.3 
TwinCity.fi 235.33 
TwinCity.fi 379.8 
CountryVil.fi 37.8 
CountryVil.fi 74.58 

我知道我需要做什麼,但我該怎麼做?

+0

你想'NULL'值? – Jodrell

回答

4

您可以使用UNPIVOT:

SELECT DISTINCT 
    filename, 
    vals 
FROM 
    (SELECT 
     filename, 
     a1, 
     a2, 
     a3 
    FROM 
     foo) p 
UNPIVOT 
    (vals FOR counts IN 
     (a1,a2,a3) 
) AS bar 

SQLFiddle here

+1

@codingManiac,我的方式更快:-p – Jodrell

+0

@Joe是否還有將當前A的數值插入另一個字段,如curA = 1或2或3? – codingManiac

1

怎麼樣,Fiddle Here

INSERT [TableTo] 
SELECT * FROM 
(
    SELECT [FileName], [A1] [Value] FROM [TableFrom] 
    UNION 
    SELECT [FileName], [A2] [Value] FROM [TableFrom] 
    UNION 
    SELECT [FileName], [A3] [Value] FROM [TableFrom] 
) [M] 
WHERE [M].[Value] IS NOT NULL; 
相關問題