计算 Pivot SQL 中的总天差

Posted

技术标签:

【中文标题】计算 Pivot SQL 中的总天差【英文标题】:Count total day difference in a Pivot SQL 【发布时间】:2021-11-25 17:11:51 【问题描述】:

我有两个表中的数据,日期为 PAL 日期和 HUB 日期。 我希望在一个有 6 列的表格中显示天数差异:

Client 1day 2days 3days 4days 5days

Client 将显示分组的客户端,1 Day 将显示多少 datediff 为 1 的计数。 2 Days 将显示多少个 datediff 2,然后是 3,然后是 4,然后是 5。

PAL 表:

Consignment_Number eventdatetime
T00A1A0001000001 2021-09-27 12:17:00.000
T00A1A0001000002 2021-09-27 12:27:00.000
T00A1A0001000003 2021-09-28 13:37:00.000
T00A1A0001000004 2021-09-28 13:47:00.000
T00A1A0001000005 2021-09-29 13:57:00.000
T00A1A0001000006 2021-09-39 14:07:00.000
T00A1A0001000007 2021-09-30 14:17:00.000
T00A1A0001000008 2021-09-30 14:27:00.000
T00A1A0001000009 2021-09-30 14:37:00.000

HUB 表:

Consignment_Number eventdatetime
T00A1A0001000001 2021-09-30 18:39:00.000
T00A1A0001000002 2021-10-01 18:40:00.000
T00A1A0001000003 2021-10-01 18:46:00.000
T00A1A0001000004 2021-10-02 18:46:00.000
T00A1A0001000005 2021-10-02 18:46:00.000
T00A1A0001000006 2021-10-03 18:46:00.000
T00A1A0001000007 2021-10-03 18:46:00.000
T00A1A0001000008 2021-10-04 18:46:00.000
T00A1A0001000009 2021-10-05 18:46:00.000

最终它会看起来像这样:

Clients 1day 2days 3days 4days 5days
Client1 5 2 3 1 0
Client2 2 2 2 1 0
Client3 4 2 5 1 0

【问题讨论】:

您使用的是哪个 dbms? 嗨,J,我正在使用 SQL 服务器 【参考方案1】:
select 
  client 
  , sum(case when abs(datediff(day, Consignment_Number,Consignment_Number)) = 1 then 1 else 0 end) 1day
  , sum(case when abs(datediff(day, Consignment_Number,Consignment_Number)) = 2 then 1 else 0 end) 2days
  , sum(case when abs(datediff(day, Consignment_Number,Consignment_Number)) = 3 then 1 else 0 end) 3days
  , ...
  , sum(case when abs(datediff(day, Consignment_Number,Consignment_Number)) = 1 then 1 else 0 end) * 100.0 / count(*) 1dayperc
  , ...
from PAL p
join HUB h
 on h.Consignment_Number = p.Consignment_Number
group by client

【讨论】:

谢谢 Eshirvana,它以我想要的格式工作。你是个传奇! 如果我想对这些应用百分比怎么办? @sidekick 查看更新的答案 我不能感谢你,你帮了我兄弟! @sidekick 欢迎您,如果有帮助,请点赞并接受答案。

以上是关于计算 Pivot SQL 中的总天差的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 计算 sql pivot 值的百分比

在 MS SQL Server 2008 的 Pivot 中计算水平总计

如何计算同一列中值的天差?

T-SQL:计算员工的总工资

如何使用 SQL 数据库计算 DataGridView 中每一行的总金额

是否可以查询 SQL Pivot 报告并将输出连接到另一个 select 语句中?