2013-12-11 4 views
0

У меня есть таблица с записями, такими как ...ВСТАВИТЬ запись для каждого уникального значения столбца

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

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

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; 
Смежные вопросы