【问题标题】:Display all the values of each category per date显示每个日期每个类别的所有值
【发布时间】:2021-06-21 05:05:13
【问题描述】:

我正在从临时表创建报告以生成每个类别的每个日期的数据
这是示例数据和表格

| Category  | Percentage   | Date       |
| Assets    | 12.89        | 2020-01-31 |
| Revenue   | 34.78        | 2020-01-31 |
| Expenses  | 30.88        | 2020-01-31 |

这是我尝试过的 mysql 查询

Select Date,
(CASE WHEN Category='Assets' THEN Percentage ELSE 0 END) AS asset,
(CASE WHEN Category='Revenue' THEN Percentage ELSE 0 END) AS income,
(CASE WHEN Category='Expenses' THEN Percentage ELSE 0 END) AS expense
from tbl_temporary1 WHERE Date='2020-01-31'

结果不是一行,而是变成了这样

| Date       | asset  | income  | expense  |
| 2020-01-31 | 12.89  | 0.00    | 0.00     |
| 2020-01-31 | 0.00   | 34.78   | 0.00     |
| 2020-01-31 | 0.00   | 0.00    | 30.88    |

预期结果

| Date       | asset  | income  | expense  |
| 2020-01-31 | 12.89  | 34.78   | 30.88    |

希望您能帮我解决,我尝试自己加入表格,但结果相同。 谢谢

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    (这里不需要子查询)

    你几乎是对的。添加总和并分组:

    Select Date,
    SUM(CASE WHEN Category='Assets' THEN Percentage ELSE 0 END) AS asset,
    SUM(CASE WHEN Category='Revenue' THEN Percentage ELSE 0 END) AS income,
    SUM(CASE WHEN Category='Expenses' THEN Percentage ELSE 0 END) AS expense
    from tbl_temporary1
    WHERE Date='2020-01-31'
    GROUP BY Date
    

    如果只选择了一个日期,则可以省略 GROUP BY,因为使用聚合函数 (SUM) 会默认将所有行分组在一起。

    【讨论】:

    • 是的,很简单……为什么我没想到。
    【解决方案2】:

    请尝试以下查询,如果您遇到任何问题,请告诉我。

    SELECT Date, SUM(asset)asset, SUM(income)income, SUM(expense) FROM
    (
    Select Date,
    (CASE WHEN Category='Assets' THEN Percentage ELSE 0 END) AS asset,
    (CASE WHEN Category='Revenue' THEN Percentage ELSE 0 END) AS income,
    (CASE WHEN Category='Expenses' THEN Percentage ELSE 0 END) AS expense
    from tbl_temporary1 WHERE Date='2020-01-31')temp
    GROUP BY Date
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-29
      • 2023-02-26
      相关资源
      最近更新 更多