gpt4 book ai didi

sql - 计算 sql 中值的总和(Distinct/Case 语句)

转载 作者:行者123 更新时间:2023-12-02 05:07:56 25 4
gpt4 key购买 nike

我想构建一个 SQL 查询,它将消除重复值 DISTINCT 然后 Sum 然后打印列值作为标题并获得结果

示例数据:-

ID  TYPE    Values
A FLM 00:34:09
A FLM 16:03:19
A SLM 00:37:48
B FLM 00:42:47
B SLM 01:14:56
C SLM 01:00:52
C SLM 00:37:48

我想为每个ID做相同TYPESum of Values然后根据Type显示/p>

预期输出:

ID  FLM         SLM
A 16:37:28 00:37:48
B 00:42:47 01:14:56
C NULL 01:38:40

我得到了什么

ID  FLM         SLM
A 01:38:40 NULL
A NULL 00:37:48
B 00:42:47 NULL
B NULL 01:14:56
C NULL 01:38:40

在这里我可以对每种类型进行求和,但结果显示在不同的两行而不是单行中。

我的查询:

Select Distinct ID
CASE
When Type='SLM'
Then STR(SUM(DateDiff(s,[Start Date],[End Date]))/3600) +
RIGHT(CONVERT(char(8),DATEADD(s,SUM(DateDiff(s,[Start Date],[End Date])),0),108),6)
End[FLM],
CASE
When Type='SLM'
Then STR(SUM(DateDiff(s,[Start Date],[End Date]))/3600) +
RIGHT(CONVERT(char(8),DATEADD(s,SUM(DateDiff(s,[Start Date],[End Date])),0),108),6)
End[SLM],

From #_TicketType GROUP BY ID,Type

附言使用数据类型为 DateTime 的列 [Start Date],[End Date] 我正在获取示例数据表中的列 Values

最佳答案

(已更新)从 group by 中删除 Type,并将 CASE 移到 SUM 中,如下所示:

Select ID,
STR(SUM(CASE Type WHEN 'FLM' THEN DateDiff(s,[Start Date],[End Date]) END)/3600) +
RIGHT(CONVERT(char(8),DATEADD(s,SUM(CASE Type WHEN 'FLM' THEN DateDiff(s,[Start Date],[End Date]) END),0),108),6) [FLM],
STR(SUM(CASE Type WHEN 'SLM' THEN DateDiff(s,[Start Date],[End Date]) END)/3600) +
RIGHT(CONVERT(char(8),DATEADD(s,SUM(CASE Type WHEN 'SLM' THEN DateDiff(s,[Start Date],[End Date]) END),0),108),6) [SLM]
From #_TicketType
GROUP BY ID

关于sql - 计算 sql 中值的总和(Distinct/Case 语句),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15986422/

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