的动态数量可以说我有三个不同的MySQL表:MySQL的支点行成列
表products
:
id | name
1 Product A
2 Product B
表partners
:
id | name
1 Partner A
2 Partner B
表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
我想获得一个表格作为列的行和产品的合作伙伴。到目前为止,我能得到这样的输出:
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
使用此查询:
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
,但我想有而不是这样的:
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
的问题是我不能说出我有多少产品,所以列号需要根据产品表中的行动态更改。
这很好的答案似乎不使用MySQL:T-SQL Pivot? Possibility of creating table columns from row values
请参考[行到列]链接(https://stackoverflow.com/questions/15745042/efficiently-convert-rows-to-columns-in-sql-server)获取多个建议。 – 2018-02-01 06:00:53