Debe trabajar un poco más antes de poder pivotar de esa manera, porque pivotar toma datos de fila y los convierte en nombres de columna, pero ninguno de sus datos de fila es 1, 2, 3, 4...
para usar como nombre de columna (inp_value1 <-- el 1 aquí)
Puedes hacer esto, que probablemente sea más fácil de entender:
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; ¿Por qué especificar name3/4/5/6 en su salida esperada si son todos nulos? Si los datos nunca tendrán más de 2 filas por par empid/ele_name, entonces puede escribir
null as input_name3..
y así sucesivamente - pps:llamé a mi tabla t2 - edite su nombre en la consulta
- pps; No sé si la columna "fecha de finalización" realmente tiene un espacio en el nombre, llamé a la mía con un guión bajo
O puede pivotar así (más difícil de entender pero más compacto):
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
pero las columnas saldrán del pvt.*
con nombres como 1_inp_name, 1_inp_value .. Tendrás que usar AS
para renombrarlos