如何按天获取值的总和,但在 SQL 列中获取天数

How do you get the sum of values by day, but day in columns SQL

我有一个 table,看起来像下面存储日期、client_name 和 order_value 的地方/

select day, client_name, order_value
from sample_table
day client_name order_value
2021-01-01 A 100
2021-01-01 A 100
2021-01-02 A 200
2021-01-03 A 100
2021-01-01 B 300
2021-01-01 B 400
2021-01-01 C 500
2021-01-02 C 500
2021-01-02 C 500

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

client_name 2021-01-01 2021-01-02 2021-01-03
A 200 200 100
B 700 Null Null
C 500 1000 Null

如果知道天数,可以使用条件聚合:

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 语句构造为字符串,然后执行它。