INSERT每个唯一列值的记录

时间:2013-12-11 14:10:12

标签: sql sql-server-2008

我有一张包含......

等记录的表格
FileName     |   A1   |   A2   |   A3   |
TwinCity.fi     233.3   235.33   379.8
CountryVil.fi   37.8             74.58

我需要在另一个表中为每个文件名和唯一的A值插入一条记录,所以对于上面我会插入...

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

我知道我需要做什么,但我该怎么做?

2 个答案:

答案 0 :(得分: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 :(得分: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;