Vous devez faire un peu plus de travail avant de pouvoir pivoter comme ça, car le pivotement prend les données de ligne et les transforme en noms de colonne, mais aucune de vos données de ligne n'est 1, 2, 3, 4...
à utiliser comme nom de colonne (inp_value1 <-- le 1 ici)
Vous pouvez le faire, ce qui est probablement plus facile à comprendre :
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 ; pourquoi spécifier name3/4/5/6 dans votre sortie attendue s'ils sont tous nuls ? Si les données n'auront jamais plus de 2 lignes par paire empid/ele_name, vous pouvez simplement écrire
null as input_name3..
et ainsi de suite - pps :j'ai appelé ma table t2 - modifiez votre nom dans la requête
- ppp ; Je ne sais pas si la colonne "date de fin" a vraiment un espace dans le nom, j'ai appelé la mienne avec un trait de soulignement
Ou vous pouvez pivoter comme ceci (plus difficile à comprendre mais plus compact) :
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
mais les colonnes sortiront du pvt.*
avec des noms comme 1_inp_name, 1_inp_value .. Vous devrez utiliser AS
pour les renommer