Трябва да свършите още малко работа, преди да можете да завъртите по този начин, защото завъртането отнема данни от редове и ги превръща в имена на колони, но нито един от вашите данни за редове не е 1, 2, 3, 4...
за използване като име на колона (inp_value1 <-- 1 тук)
Можете да направите това, което вероятно е по-лесно за разбиране:
SELECT
Empid,
Ele_name,
MAX(CASE WHEN rown = 1 THEN Inp_name END) as Inp_name1,
MAX(CASE WHEN rown = 1 THEN Inp_value END) as Inp_Value1,
MAX(CASE WHEN rown = 2 THEN Inp_name END) as Inp_name2,
MAX(CASE WHEN rown = 2 THEN Inp_value END) as Inp_Value2,
MAX(CASE WHEN rown = 3 THEN Inp_name END) as Inp_name3,
MAX(CASE WHEN rown = 3 THEN Inp_value END) as Inp_Value3,
MAX(CASE WHEN rown = 4 THEN Inp_name END) as Inp_name4,
MAX(CASE WHEN rown = 4 THEN Inp_value END) as Inp_Value4,
MAX(CASE WHEN rown = 5 THEN Inp_name END) as Inp_name5,
MAX(CASE WHEN rown = 5 THEN Inp_value END) as Inp_Value5,
MAX(CASE WHEN rown = 6 THEN Inp_name END) as Inp_name6,
MAX(CASE WHEN rown = 6 THEN Inp_value END) as Inp_Value6,
EntryId,
Start_date,
End_Date
FROM
(SELECT t2.*, ROW_NUMBER() OVER(PARTITION BY EmpId, Ele_name ORDER BY 1) as rown FROM t2) d
GROUP BY
Empid,
Ele_name,
EntryId,
Start_date,
End_Date
- ps; защо да посочвате name3/4/5/6 в очаквания изход, ако те са allnull? Ако данните никога няма да имат повече от 2 реда на двойка empid/ele_name, тогава можете просто да напишете
null as input_name3..
и така нататък - pps:извиках таблицата си t2 - редактирайте името си в заявката
- ppps; Не знам дали колоната „крайна дата“ наистина има интервал в името, нарекох моята с долна черта
Или можете да завъртите по този начин (по-трудно за разбиране, но по-компактно):
SELECT
Empid,
Ele_name,
pvt.*,
EntryId,
Start_date,
End_Date
FROM
(SELECT t2.*, ROW_NUMBER() OVER(PARTITION BY EmpId, Ele_name ORDER BY 1) as rown
FROM t2) d
PIVOT(
MAX(inp_name) as inp_name,
MAX(inp_value) as inp_value
FOR rown in (1,2,3,4,5,6)
) pvt
но колоните ще излязат от pvt.*
с имена като 1_inp_name, 1_inp_value .. Ще трябва да използвате AS
за да ги преименувате