Je moet wat meer werk doen voordat je zo kunt draaien, want draaien neemt rijgegevens en maakt er kolomnamen van, maar geen van je rijgegevens is 1, 2, 3, 4...
om als kolomnaam te gebruiken (inp_value1 <-- de 1 hier)
U kunt dit doen, wat waarschijnlijk gemakkelijker te begrijpen is:
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; waarom zou u name3/4/5/6 specificeren in uw verwachte uitvoer als ze allemaal null zijn? Als de gegevens nooit meer dan 2 rijen per empid/ele_name-paar zullen hebben, dan kun je gewoon
null as input_name3..
enzovoort - pps:ik heb mijn tabel t2 genoemd - bewerk je naam in de query
- pps; Ik weet niet of de kolom "einddatum" echt een spatie in de naam heeft, ik noemde de mijne met een onderstrepingsteken
Of je kunt als volgt draaien (moeilijker te begrijpen maar compacter):
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
maar de kolommen komen uit de pvt.*
met namen als 1_inp_name, 1_inp_value .. Je moet AS
gebruiken om ze te hernoemen