Bạn nhận được đầu ra như vậy đơn giản là vì bạn đang phát hành select
câu lệnh chống lại một bảng (tbl
của bạn bảng) có lẽ chứa một cột (ví dụ:cột khóa chính) xác định duy nhất một hàng và pivot
toán tử xem xét các giá trị của cột đó. Đây là một ví dụ đơn giản:
/*assume it's your table tbl */
with tbl(unique_col, col1, col2) as(
select 1, 'a', 'a1' from dual union all
select 2, 'b', 'b1' from dual union all
select 3, 'c', 'c1' from dual
)
Một truy vấn đối với một bảng như vậy sẽ cung cấp cho bạn kết quả (đầu ra không mong muốn) mà bạn đã cung cấp trong câu hỏi:
select A,B
from tbl
pivot(
max(col2) for col1 in ('a' as A,'b' as B)
)
Kết quả:
A B
-- --
a1 null
null b1
Để tạo ra đầu ra mong muốn, bạn cần loại trừ cột có giá trị duy nhất cho một hàng:
select A
, B
from (select col1
, col2 /*selecting only those columns we are interested in*/
from tbl )
pivot(
max(col2) for col1 in ('a' as A,'b' as B)
)
Kết quả:
A B
-- --
a1 b1