Tôi có hai bảng trong một cơ sở dữ liệu báo cáo, một cho các đơn đặt hàng và một cho các mục đặt hàng. Mỗi đơn hàng có thể có nhiều mục theo thứ tự, cùng với một số lượng cho mỗi:Làm cách nào để bạn tạo truy vấn trả về tên cột động trong Postgresql?
Orders
+----------+---------+
| order_id | email |
+----------+---------+
| 1 | [email protected] |
+----------+---------+
| 2 | [email protected] |
+----------+---------+
| 3 | [email protected] |
+----------+---------+
Order Items
+---------------+----------+----------+--------------+
| order_item_id | order_id | quantity | product_name |
+---------------+----------+----------+--------------+
| 1 | 1 | 1 | Tee Shirt |
+---------------+----------+----------+--------------+
| 2 | 1 | 3 | Jeans |
+---------------+----------+----------+--------------+
| 3 | 1 | 1 | Hat |
+---------------+----------+----------+--------------+
| 4 | 2 | 2 | Tee Shirt |
+---------------+----------+----------+--------------+
| 5 | 3 | 3 | Tee Shirt |
+---------------+----------+----------+--------------+
| 6 | 3 | 1 | Jeans |
+---------------+----------+----------+--------------+
Đối với mục đích báo cáo, tôi rất muốn denormalise dữ liệu này vào một cái nhìn PostgreSQL riêng biệt (hoặc chỉ cần chạy một truy vấn) có thể biến các dữ liệu phía trên vào một cái gì đó như thế này:
+----------+---------+-----------+-------+-----+
| order_id | email | Tee Shirt | Jeans | Hat |
+----------+---------+-----------+-------+-----+
| 1 | [email protected] | 1 | 3 | 1 |
+----------+---------+-----------+-------+-----+
| 2 | [email protected] | 2 | 0 | 0 |
+----------+---------+-----------+-------+-----+
| 3 | [email protected] | 3 | 1 | 0 |
+----------+---------+-----------+-------+-----+
tức là tổng số lượng của mỗi mục trong đơn đặt hàng với tên sản phẩm; và tên sản phẩm được đặt làm tiêu đề cột. Tôi có cần phải sử dụng một cái gì đó như crosstab để làm điều này, hoặc là có một cách thông minh bằng cách sử dụng truy vấn phụ ngay cả khi tôi không biết danh sách các tên sản phẩm riêng biệt tại trước khi chạy truy vấn.
nếu tôi không biết danh sách tên sản phẩm riêng biệt, hãy sử dụng crosstab –
@Joe: Bạn có thể sắp xếp sự cố không? – lakshman
Không phải với một truy vấn đặc biệt tốt đẹp không may, tôi đã phải liệt kê ra mỗi sản phẩm của tôi trong truy vấn. Vẫn đang tìm kiếm một cách tốt để sử dụng crosstab cho – Joe