Sử dụng crosstab()
từ bảng mô-đun bổ sung.
Khó khăn cụ thể ở đây là "tên hàng" bao gồm hai cột. Tôi nối cho mục đích của truy vấn và không hiển thị cột được nối ở cuối.
Giả sử fn
và ln
là NOT NULL
. Chưa được kiểm tra:
SELECT fn, ln, cat1, cat2
FROM crosstab(
'SELECT fn || ln AS row_name, fn, ln, file_type, attribute
FROM t
ORDER BY fn, ln, file_type'
,$$VALUES ('cat1'::text), ('cat2')$$)
AS t (row_name text, fn text, ln int, cat1 text, cat2 text);
Một tùy chọn khác sẽ là thêm "tên hàng" thay thế bằng một hàm cửa sổ như dense_rank()
và coi việc xác định hai cột là "cột phụ". Ví dụ:
- Truy vấn bảng chéo postgresql với nhiều cột "tên hàng"
Khái niệm cơ bản:
- Truy vấn bảng chéo PostgreSQL