Giả sử tôi có ba bảng MySQL khác nhau:
Bảng products
:
id | name
1 Product A
2 Product B
Bảng partners
:
id | name
1 Partner A
2 Partner B
Bảng sales
:
partners_id | products_id
1 2
2 5
1 5
1 3
1 4
1 5
2 2
2 4
2 3
1 1
Tôi muốn có một bảng với các đối tác trong các hàng và sản phẩm dưới dạng cột. Cho đến nay tôi đã có thể nhận được đầu ra như thế này:
name | name | COUNT( * )
Partner A Product A 1
Partner A Product B 1
Partner A Product C 1
Partner A Product D 1
Partner A Product E 2
Partner B Product B 1
Partner B Product C 1
Partner B Product D 1
Partner B Product E 1
Sử dụng truy vấn này:
SELECT partners.name, products.name, COUNT( * )
FROM sales
JOIN products ON sales.products_id = products.id
JOIN partners ON sales.partners_id = partners.id
GROUP BY sales.partners_id, sales.products_id
LIMIT 0 , 30
nhưng thay vào đó tôi muốn có một cái gì đó như:
partner_name | Product A | Product B | Product C | Product D | Product E
Partner A 1 1 1 1 2
Partner B 0 1 1 1 1
Vấn đề là tôi không thể biết tôi sẽ có bao nhiêu sản phẩm nên số cột cần thay đổi động tùy thuộc vào các hàng trong bảng sản phẩm.
Câu trả lời rất hay này dường như không hoạt động với mysql: T-SQL Pivot? Khả năng tạo cột bảng từ các giá trị hàng