各位同事,大家好!
拜托,有人能告诉我如何从三个纵队组成一个小组吗?例如,在一个表中有三列具有相同类型的A、B、C,它们存储相同类型的数据,例如:“bread”、“water”、“chocolate”。我们还有日期栏。
看起来像是:
Col_A | Col_B | Col_C | Date
--------- | --------- | ------- | ----------
Bread | Null | Water | 19.01.2016
Bread | Bread | Water | 22.02.2016
Chocolate | Chocolate | Null | 18.03.2016
我想计算每月销售多少产品?
预期结果:
January -> Bread 1, Water 1
February ->Bread 2, Water 1
March -> Chocolate 2
对于一列,我使用了如下查询:
SELECT A, COUNT(A) FROM MyDB GROUP BY month(Date)
但我不知道如何计算3列的时间?
感谢您的帮助!
最佳答案
当然,你必须把它们都放在一个列中:)
SELECT my_column, COUNT(my_column) FROM (
SELECT Col_A AS my_column FROM your_table
UNION ALL
SELECT Col_B FROM your_table
UNION ALL
SELECT Col_C FROM your_table
) sq
GROUP BY my_column;
另外,你应该考虑重新设计你的数据库。正如你所看到的,这个表是次优的。