Sie müssen noch etwas mehr Arbeit leisten, bevor Sie so schwenkbar sind, da beim Schwenken Zeilendaten in Spaltennamen umgewandelt werden, aber keine Ihrer Zeilendaten 1, 2, 3, 4...
ist als Spaltenname zu verwenden (inp_value1 <-- die 1 hier)
Sie können dies tun, was wahrscheinlich einfacher zu verstehen ist:
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; Warum geben Sie name3/4/5/6 in Ihrer erwarteten Ausgabe an, wenn sie alle null sind? Wenn die Daten nie mehr als 2 Zeilen pro empid/ele_name-Paar haben, können Sie einfach
null as input_name3..
schreiben und so weiter - pps:ich habe meinen tisch t2 genannt - bearbeite deinen namen in der abfrage
- pps; Ich weiß nicht, ob die Spalte "Enddatum" wirklich ein Leerzeichen im Namen hat, ich habe meine mit einem Unterstrich aufgerufen
Oder Sie können so schwenken (schwerer zu verstehen, aber kompakter):
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
aber die Spalten kommen aus pvt.*
mit Namen wie 1_inp_name, 1_inp_value .. Sie müssen AS
verwenden um sie umzubenennen