Từ trạng thái hiện tại của bạn, bạn chỉ có thể thực hiện việc xoay vòng bằng cách sử dụng FILTER
mệnh đề:
SELECT
response,
document,
MAX(bill) FILTER (WHERE label = 'bill') as bill,
MAX(answer) FILTER (WHERE label = 'amount') as amount,
MAX(product) FILTER (WHERE label = 'product') as product,
MAX(answer) FILTER (WHERE label = 'price') as price
FROM t
GROUP BY response, document
Tôi không chắc lắm, bảng ban đầu của bạn trông như thế nào. Nếu nó giống như thế này:
response | document | label | value
-------: | -------: | :------ | :----
71788176 | 79907201 | bill | 26899
71788176 | 79907201 | amount | 1
71788176 | 79907201 | product | shoes
71788176 | 79907201 | price | 25.99
Sau đó, bạn có thể sửa đổi truy vấn như sau:
SELECT
response,
document,
MAX(value) FILTER (WHERE label = 'bill') as bill,
MAX(value) FILTER (WHERE label = 'amount') as amount,
MAX(value) FILTER (WHERE label = 'product') as product,
MAX(value) FILTER (WHERE label = 'price') as price
FROM t
GROUP BY response, document
Chỉnh sửa :TO đã thêm giá trị JSON vào cột sản phẩm:
Biến thể 1:Bạn chỉ cần truyền kiểu json
thành loại text
:
MAX(product::text) FILTER (WHERE label = 'product') as product,
Biến thể 2:Bạn đọc giá trị từ "name"
thuộc tính:
MAX(product ->> 'name') FILTER (WHERE label = 'product') as product,