gpt4 book ai didi

sql - 分组不同或更改为多个子查询

转载 作者:行者123 更新时间:2023-12-04 21:31:20 26 4
gpt4 key购买 nike

我是一名 .net 开发人员,除了基本的 CRUD 之外,不会做很多 SQL。

我在 SQL Server 2005 中有一个表:

CREATE TABLE [dbo].[Cases](
[CasesID] [int] IDENTITY(1,1) NOT NULL,
[Enterprise_Date_Key] [int] NOT NULL,
[Interval_Num] [int] NOT NULL,
[QueueID] [int] NOT NULL,
[TotalCases] [int] NOT NULL,

数据类似于:
4609    3   0   12455   4532
4610 3 0 12452 7963
4625 3 1 12455 4542
4626 3 1 12452 7993
4627 3 2 12455 4552
4628 3 2 12452 7823
.

我运行查询:
set @enterpriseDateKey = 3
select QueueID, interval_num, max(TotalCases)
from Case_Process_Status_Hourly_Fact a
where a.Enterprise_Date_Key = @enterpriseDateKey
group by QueueID,Interval_Num

结果是:
12452   0   4532
12455 0 7963
12452 1 4542
12455 1 7993
12452 2 4552
12455 3 7823
.
.
.

我需要一个查询的帮助,该查询将对数据进行不同的分组,其中间隔是列(X 轴)和 QueueID在行(Y 轴)上分组。如:
12452   4532    4542    4552    .   .
12455 7963 7993 7823 . .

老实说,我不知道该往哪个方向走才能得到想要的结果。我不知道我是否应该沿着创建多个子查询的路径来获取我的数据,或者是否有任何方法可以进行不同的分组以获得我想要的结果。任何建议都会非常有帮助。

最佳答案

在 SQL Server 中有不止一种方法可以将结果从行转移到列。在这种情况下,最明显的方法似乎是使用聚合:

select QueueID,
max(case when interval_num = 0 then TotalCases end) as Int0,
max(case when interval_num = 1 then TotalCases end) as Int1,
max(case when interval_num = 2 then TotalCases end) as Int2,
max(case when interval_num = 3 then TotalCases end) as Int3,
. . .
from Case_Process_Status_Hourly_Fact a
where a.Enterprise_Date_Key = @enterpriseDateKey
group by QueueID

这基本上是您对 select 的查询具有旋转列的子句。在 SQL 中,您必须指定列数,因此请输入您认为必要的数字。

关于sql - 分组不同或更改为多个子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14042694/

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