Devi fare ancora un po' di lavoro prima di poter ruotare in questo modo, perché il pivot prende i dati di riga e li trasforma in nomi di colonna, ma nessuno dei tuoi dati di riga è 1, 2, 3, 4...
da utilizzare come nome di colonna (inp_value1 <-- qui 1)
Puoi farlo, che è probabilmente più facile da capire:
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; perché specificare name3/4/5/6 nell'output previsto se sono tutti nulli? Se i dati non avranno mai più di 2 righe per coppia empid/ele_name, puoi semplicemente scrivere
null as input_name3..
e così via - pps:ho chiamato il mio tavolo t2 - modifica il tuo nome nella query
- ppps; Non so se la colonna "data di fine" ha davvero uno spazio nel nome, ho chiamato il mio con un trattino basso
Oppure puoi ruotare in questo modo (più difficile da capire ma più compatto):
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
ma le colonne usciranno da pvt.*
con nomi come 1_inp_name, 1_inp_value .. Dovrai usare AS
per rinominarli