各位同事,大家好!
拜托,有人能告诉我如何从三个纵队组成一个小组吗?例如,在一个表中有三列具有相同类型的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;

另外,你应该考虑重新设计你的数据库。正如你所看到的,这个表是次优的。

10-08 19:44