【问题标题】:How do you get the sum of values by day, but day in columns SQL你如何获得按天计算的值的总和,但在 SQL 列中按天计算
【发布时间】:2021-04-18 09:50:11
【问题描述】:

我有一个如下所示的表,其中存储了 day、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

【问题讨论】:

  • 你想要多少列?? 每年有 365 天

标签: sql sum vertica calculation


【解决方案1】:

如果你知道日子是什么日子,你可以使用条件聚合:

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

【讨论】:

  • 谢谢你!
猜你喜欢
  • 2023-02-01
  • 1970-01-01
  • 2013-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-25
相关资源
最近更新 更多