Trường hợp thử nghiệm (cách ưu tiên để cung cấp dữ liệu mẫu):
CREATE TEMP TABLE prefs (pref_id int, pref_name text, pref_value text);
INSERT INTO prefs VALUES
(1, 'PagerNumber' , '2125551234')
,(2, 'PagerCarrier', '@att.com')
,(3, 'PagerCarrier', '@something.com');
Truy vấn:
SELECT *
FROM crosstab(
'SELECT pref_id, pref_name, pref_value
FROM prefs
ORDER BY 1, 2',
$$VALUES ('PagerNumber'::text), ('PagerCarrier')$$
)
AS x (section text, pager_number bigint, pager_carrier text);
Trả về chính xác kết quả được mô tả trong câu hỏi của bạn. Nếu một PagerNumber
có thể là một cái gì đó khác ngoài bigint
hợp lệ số, sử dụng text
thay vào đó.
Câu trả lời bạn đang đề cập đến trong câu hỏi của bạn đã lỗi thời và không bao giờ chính xác để bắt đầu. Tôi đã thêm một câu trả lời thích hợp kèm theo giải thích và liên kết ở đó.