计算 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 中的总天差的主要内容,如果未能解决你的问题,请参考以下文章
在 MS SQL Server 2008 的 Pivot 中计算水平总计