gpt4 book ai didi

sql - 使用总和将 SQL 表行转为 3 列

转载 作者:行者123 更新时间:2023-12-04 16:07:35 27 4
gpt4 key购买 nike

我尝试旋转我的 SQL 表,但无法获得所需的结果。
我的 table 看起来像这样

DOEntry        RouteID      StoreID        Status
----------------------------------------------------

01-02-2016 100 1134 Complete
01-02-2016 100 419 No Visit
01-02-2016 100 420 Complete
01-02-2016 100 423 Complete
01-02-2016 100 451 Complete
01-02-2016 100 457 Complete
01-02-2016 100 488 Complete
01-02-2016 100 667 Complete
01-02-2016 101 373 Complete
01-02-2016 101 374 Complete
01-02-2016 101 376 Complete
01-02-2016 101 427 Complete
01-02-2016 101 460 Complete
01-02-2016 101 465 Complete
01-02-2016 101 616 No Visit
01-02-2016 101 688 No Visit
02-02-2016 100 421 No Visit
02-02-2016 100 422 No Visit
02-02-2016 100 424 Complete
02-02-2016 100 425 No Visit
02-02-2016 100 456 No Visit
02-02-2016 100 458 Complete
02-02-2016 100 459 Complete
02-02-2016 100 486 Complete
02-02-2016 101 375 Complete
02-02-2016 101 377 Complete
02-02-2016 101 378 Complete
02-02-2016 101 383 No Visit
02-02-2016 101 426 Complete
02-02-2016 101 604 Complete
02-02-2016 101 605 No Visit
02-02-2016 101 609 Complete

我需要如何查看枢轴

DOEntry        RouteID      [Complete]        [InComplete]        [No Visit]
01-02-2016 100 7 0 1
01-02-2016 101 6 0 2
02-02-2016 100 4 0 4
02-02-2016 101 6 0 2

Complete[InComplete][No Visit] 是在 StoreID 中找到的总和

仅供引用:在给定的场景中,我确实知道您看不到 InComplete,但在大范围内 InComplete 确实存在。
谢谢

最佳答案

考虑到 STATUS 列中的值数量是固定且已知的。如果 Status 中的值不固定且未知,则需要使用 Dynamic Sql 进行数据透视

使用条件聚合来做到这一点

SELECT DOEntry,
RouteID,
[Complete]= Sum(Iif(status = 'Complete', 1, 0)),
[InComplete]= Sum(Iif(status = 'InComplete', 1, 0)),
[No Visit]= Sum(Iif(status = 'No Visit', 1, 0))
FROM Yourtable
GROUP BY DOEntry,
RouteID
Order by DOEntry

或者你可以使用PIVOT操作符

SELECT DOEntry,
RouteID,
[Complete],
[InComplete],
[No Visit]
FROM Yourtable
PIVOT (Count(StoreID)
FOR Status IN ([Complete],
[InComplete],
[No Visit]))pv
ORDER BY DOEntry

结果:

╔════════════╦═════════╦══════════╦════════════╦══════════╗
║ DOEntry ║ RouteID ║ Complete ║ InComplete ║ No Visit ║
╠════════════╬═════════╬══════════╬════════════╬══════════╣
║ 2016-01-02 ║ 100 ║ 7 ║ 0 ║ 1 ║
║ 2016-01-02 ║ 101 ║ 6 ║ 0 ║ 2 ║
║ 2016-02-02 ║ 100 ║ 4 ║ 0 ║ 4 ║
║ 2016-02-02 ║ 101 ║ 6 ║ 0 ║ 2 ║
╚════════════╩═════════╩══════════╩════════════╩══════════╝

两者都有相似的执行计划,你可以使用它们中的任何一个

条件聚合

Conditonal Aggregate

枢轴

Pivot

关于sql - 使用总和将 SQL 表行转为 3 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35533372/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com