Как преобразовать 1 строку с несколькими в 2 строки с несколькими столбцами на SQL Server? - PullRequest
0 голосов
/ 16 октября 2018

У меня есть следующая таблица:

enter image description here

Мне нужно сделать запрос, чтобы получить следующий результат:

enter image description here

Я пытался с UNPIVOT, но это не работает.У меня 12 месяцев, но я, например, поставил только 2.

Как я могу это сделать?

Ответы [ 3 ]

0 голосов
/ 16 октября 2018

Вы можете использовать apply:

select t.Sector, tt.*
from table t cross apply
     ( values ('Jan', Jan_Estimated, Jan_Sold),
              ('Feb', Feb_Estimated, Feb_Sold),
               . . .
     ) tt (Month, Val_Estimated, Val_Sold);
0 голосов
/ 16 октября 2018

Вы можете использовать UNPIVOT:

SELECT  sector, [Month] = Substring(col1,1,3), val_Estimated, val_Sold
FROM    ( 
    SELECT * FROM [tableName] 
) as t 
UNPIVOT ( val_Estimated for col1 IN (jan_estimated,feb_estimated)) AS unpvt 
UNPIVOT ( val_Sold for col2 in (jan_sold, feb_sold)) up2
WHERE SUBSTRING(col1,1,3) = SUBSTRING(col2,1,3)
0 голосов
/ 16 октября 2018

Вы можете использовать CROSS APPLY:

SELECT tab.sector, sub.* 
FROM tab
CROSS APPLY (VALUES ('Jan', Jan_estimated, Jan_sold),
                    ('Feb', Feb_estimated, Feb_sold)
  )sub(Month,Val_estimated, Val_sold)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...