首页 > 解决方案 > 你如何获得按天计算的值的总和,但在 SQL 列中按天计算

问题描述

我有一个如下所示的表,其中存储了 day、client_name 和 order_value/

select day, client_name, order_value
from sample_table
客户名称 订单价值
2021-01-01 一个 100
2021-01-01 一个 100
2021-01-02 一个 200
2021-01-03 一个 100
2021-01-01 300
2021-01-01 400
2021-01-01 C 500
2021-01-02 C 500
2021-01-02 C 500

我想按天获得每个客户的 order_value 总和,但按天计算。基本上,我希望我的结果是这样的。

客户名称 2021-01-01 2021-01-02 2021-01-03
一个 200 200 100
700 无效的 无效的
C 500 1000 无效的

标签: sqlsumverticacalculation

解决方案


如果您知道日期是什么,则可以使用条件聚合:

select client_name,
       sum(case when date = '2021-01-01' then order_value end) as date_20210101,
       sum(case when date = '2021-01-02' then order_value end) as date_20210102,
       sum(case when date = '2021-01-03' then order_value end) as date_20210103
from t
group by client_name ;

如果您不知道具体的日期(即,您希望它们基于数据或变量号),那么您需要使用动态 SQL。这意味着您将 SQL 语句构造为字符串,然后执行它。


推荐阅读