Как я могу развернуть несколько столбцов в имя и значение? - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть такая таблица:

Dates   Time    Item1   Item2   Item3
1-Jan   0:00    Bread   Bread   Peach
1-Jan   6:00    Lemon   Peach   Peach
1-Jan   12:00   Lemon   Bread   Bread
1-Jan   18:00   Bread   Lemon   Peach
2-Jan   0:00    Bread   Lemon   Peach
2-Jan   6:00    Bread   Lemon   Peach
  …      …        …       …       …

И я хочу добиться этого:

Dates   Times   Item    Food
1-Jan   0:00    Item1   Bread
1-Jan   0:00    Item2   Bread
1-Jan   0:00    Item3   Peach
1-Jan   6:00    Item1   Lemon
1-Jan   6:00    Item2   Peach
  …      …       …       …

Я знаю, как отключить один столбец, проблема в том, что япопробуй снять их все одновременно, я не знаю как правильно сделать объединение

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

Даст ли это тот же результат, что и перекрестное применение?

SELECT Dates, Time, Item, Food
From mytable
unpivot (
Food
for [Item] in ([Item1],[Item2],[Item3])
)AS p 

Rextester Demo

0 голосов
/ 07 декабря 2018

Вы можете ПРЕКРАТИТЬ ПРИМЕНИТЬ это с помощью ЗНАЧЕНИЙ

SELECT Dates, [Time], Item, Food
FROM yourtable
CROSS APPLY (VALUES 
            ('Item1', Item1),
            ('Item2', Item2),
            ('Item3', Item3)) as Items(Item, Food);

Тест здесь

...