Bạn cần thực hiện thêm một số công việc trước khi có thể xoay vòng như vậy, vì xoay vòng lấy dữ liệu hàng và biến nó thành tên cột, nhưng không có dữ liệu hàng nào của bạn là 1, 2, 3, 4...
để sử dụng làm tên cột (inp_value1 <- the 1 here)
Bạn có thể làm điều này, điều này có lẽ dễ hiểu hơn:
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; tại sao chỉ định name3 / 4/5/6 trong đầu ra mong đợi của bạn nếu chúng toàn bộ? Nếu dữ liệu không bao giờ có nhiều hơn 2 hàng cho mỗi cặp empid / ele_name thì bạn chỉ có thể viết
null as input_name3..
vân vân và vân vân - pps:tôi đã gọi bảng của mình là t2 - hãy chỉnh sửa tên của bạn vào truy vấn
- ppps; Tôi không biết cột "ngày kết thúc" có thực sự có khoảng trắng trong tên hay không, tôi đã gọi là cột của mình bằng dấu gạch dưới
Hoặc bạn có thể xoay như thế này (khó hiểu hơn nhưng gọn hơn):
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
nhưng các cột sẽ thoát ra khỏi pvt.*
với các tên như 1_inp_name, 1_inp_value .. Bạn sẽ phải sử dụng AS
để đổi tên chúng