Создание нескольких столбцов в нескольких строках в SQL
Всем Привет,
У меня есть таблица, которую мне нужно преобразовать в несколько строк столбцов,
входная таблица
SubHeading_Name Pointer_Id JV Jan Feb Preparation & Planning 1 JV1 4 2 Preparation & Planning 2 JV1 3 3 Preparation & Planning 3 JV1 2 2 Preparation & Planning 4 JV1 4 1 Preparation & Planning 1 JV2 4 2 Preparation & Planning 2 JV2 3 3 Preparation & Planning 3 JV2 2 2 Preparation & Planning 4 JV2 4 1
Ожидаемый Результат:
Empty | MonthName | Jan | Feb | ------------------------------------------------------------------------------ SubHeading_Name | Pointer_Id | JV1 JV2 | JV1 JV2 | ------------------------------------------------------------------------------ Preparation & Planning | 1 | 4 4 | 2 2 | Preparation & Planning | 2 | 3 3 | 3 3 | Preparation & Planning | 3 | 2 2 | 2 2 | Preparation & Planning | 4 | 4 4 | 1 1 |
Что я уже пробовал:
WITH Main as (select ts.SubHeading_Name,tp.Pointer_Id,tp.Pointer_Name from [actionline].[Tbl_Altitude_Pointer_Master] tp left join [actionline].[Tbl_Altitude_SubHeading_Master] ts on ts.SubHeading_Id=tp.SubHeading_Id ), TB1 as( select Pointer_Id,SUM(Score) Score,LEFT(DATENAME(MONTH,Created_On),3) Mnth, 'JV'+CONVERT(varchar(10),DENSE_RANK() OVER (ORDER BY Created_On)) AS JV from [actionline].[Tbl_Altitude_SoftSkill_ScorePointer] where SP='ANAWAB' group by Created_On,Pointer_Id ), TB2 as( SELECT Pointer_Id, JV, [Jan], [Feb], [Mar], [Apr], [May], [Jun], [Jul], [Aug], [Sep], [Oct], [Nov], [Dec] FROM (SELECT Pointer_Id,JV,Score,Mnth FROM TB1) AS SourceTable PIVOT ( SUM(Score) FOR Mnth IN ([Jan], [Feb], [Mar], [Apr], [May], [Jun], [Jul], [Aug], [Sep], [Oct], [Nov], [Dec] ) ) AS PivotTable) select m.SubHeading_Name,t.* from Main m inner join Tb2 t on m.Pointer_Id=t.Pointer_Id order by Pointer_Id
Santosh kumar Pithani
Создать таблицу #Test ( SubHeading_Name VARCHAR(500),Pointer_Id int,JV VARCHAR(100),JAN INT,FEB INT);
Вставить в #тест
ЦЕННОСТИ
("Подготовка и планирование",1,"СП1",4,2)
,('Подготовка и планирование',2,'СП1',3,3)
,('Подготовка и планирование',3,'СП1',2,2)
,('Подготовка и планирование',4,'СП1',4,1)
,('Подготовка и планирование',1,'СП2',4,2)
,('Подготовка и планирование',2,'СП2',3,3)
,('Подготовка и планирование',3,'СП2',2,2)
,('Подготовка и планирование',4,'СП2',4,1)
ВЫБИРАТЬ
SubHeading_Name,Pointer_Id,
Макс(случай, когда JV1 СП='' затем бросил(января как varchar(10)) конец)+' '+
Макс(случай, когда СП JV2='' затем бросил(января как varchar(10)) конец) как января,
Макс(случай, когда JV1 СП='' затем бросил(февраля как varchar(10)) конец)+' '+
Макс(случай, когда СП JV2='' затем бросил(февраля как varchar(10)) конец) как февраля
Из #test GROUP BY SubHeading_Name,Pointer_Id