2013-10-09 5 views
1

У меня есть таблица под названием результат, который имеет 11 столбцов и выглядетьКак создать несколько строк из одной строки

Name Seat FA1 FA2 Fa3 FB1 FB2 FB3 FC1 FC2 FC3 

, что я пытаюсь сделать, это разбить каждую строку в 3 строки, так что строки могут быть, как это

Name Seat FA1 FB1 FC1 

Name Seat FA2 FB2 FC2 

Name Seat FA3 FB3 FC3 
+0

, что имена полей, пожалуйста? –

+0

Проводка ответа не работает, но обычно вы должны использовать 'UNION ALL'. Кроме того, вы можете посмотреть на «PIVOT/UNPIVOT», но это может быть излишним. –

+0

Ох - они имена полей - извините. –

ответ

1

Я нашел этот метод - с помощью комбинации креста применить и ценность, чтобы быть чрезвычайно полезной - я получил это от here, где автор (Кеннет Фишер) рассуждает об этом по соображениям эффективности использования неволя. То, что мне больше всего нравится, - это легкость управления макетами, которую он предоставляет, и думать, что это проще, чем неволить. Она будет работать в SQL 2008.

SELECT 
    Name 
    , Seat 
    , CA1.Aaisle 
    , CA1.Baisle 
    , CA1.Caisle 
FROM UnPivotMe 
CROSS APPLY (
    VALUES 
       (FA1, FB1, FC1) 
       , (FA2, FB2, FC2) 
       , (FA3, FB3, Fc3) 
      ) AS CA1 (Aaisle, Baisle, Caisle) 
; 

EDIT - извини измененные псевдонимы к чему-то более логичному

+0

+1, но вы должны переименовать в 'aas, bees, cees'

+0

:) до тех пор, пока оно будет понято - выбранное имя принадлежит пользователю –

1

Если типы совпадают, то вы могли бы использовать ...

SELECT Name, Seat, FA1, FB1, FC1 from result 

UNION ALL 

SELECT Name, Seat, FA2, FB2, FC2 from result 

UNION ALL 

SELECT Name, Seat, FA3, FB3, FC3 from result 

Это будет зависеть от того, хотите ли вы Filte г из результатов, вы можете показывать только строки, где есть значения во всех ...

SELECT Name, Seat, FA1, FB1, FC1 
from result 
WHERE (FA1 IS NOT NULL AND FB1 IS NOT NULL AND FC1 IS NOT NULL) 
Смежные вопросы