Du skal gøre noget mere arbejde, før du kan pivotere sådan, fordi pivotering tager rækkedata og gør det til kolonnenavne, men ingen af dine rækkedata er 1, 2, 3, 4...
at bruge som et kolonnenavn (inp_value1 <-- 1'eren her)
Du kan gøre dette, hvilket nok er lettere at forstå:
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; hvorfor angive navn3/4/5/6 i dit forventede output, hvis de er helt nul? Hvis data aldrig vil have mere end 2 rækker pr. empid/ele_name-par, kan du bare skrive
null as input_name3..
og så videre - pps:jeg kaldte min tabel t2 - rediger dit navn i forespørgslen
- ppps; Jeg ved ikke om kolonnen "slutdato" virkelig har et mellemrum i navnet, jeg kaldte min med en understregning
Eller du kan pivotere sådan her (sværere at forstå, men mere kompakt):
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
men kolonnerne kommer ud af pvt.*
med navne som 1_inp_name, 1_inp_value .. Du skal bruge AS
for at omdøbe dem