Anda perlu melakukan beberapa pekerjaan lagi sebelum dapat melakukan pivot seperti itu, karena pivot mengambil data baris dan membuatnya menjadi nama kolom, tetapi tidak ada data baris Anda yang 1, 2, 3, 4...
untuk digunakan sebagai nama kolom (inp_value1 <-- 1 di sini)
Anda dapat melakukan ini, yang mungkin lebih mudah dipahami:
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; mengapa tentukan name3/4/5/6 di output yang Anda harapkan jika semuanya nol? Jika data tidak akan pernah memiliki lebih dari 2 baris per pasangan empid/ele_name maka Anda cukup menulis
null as input_name3..
dan seterusnya - pps:saya memanggil tabel saya t2 - edit nama Anda ke dalam kueri
- pps; Saya tidak tahu apakah kolom "tanggal akhir" benar-benar memiliki spasi pada namanya, saya memanggil milik saya dengan garis bawah
Atau Anda dapat memutar seperti ini (lebih sulit dipahami tetapi lebih ringkas):
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
tapi kolom akan keluar dari pvt.*
dengan nama sebagai 1_inp_name, 1_inp_value .. Anda harus menggunakan AS
untuk mengganti namanya