gpt4 book ai didi

sql - 从同一表中的行计算 SQL 存储过程中的总数

转载 作者:行者123 更新时间:2023-12-04 06:05:53 25 4
gpt4 key购买 nike

我正在尝试构建一个存储过程,它允许我从基于另一个条件的另一个值中减去基于特定条件的值,但我的问题是所有行都位于同一个表中。向您展示我的意思可能更容易。

想象一下,如果你有下表(为了简单起见,保持简单)

ID    Name     Total    Date
1 User1 5 20111106
2 User2 6 20111106
3 User3 7 20111105
4 User1 8 20111106
5 User3 4 20111117
6 User1 4 20111117
7 User5 1 20111105
8 User1 9 20111105
9 User3 5 20111106
10 User1 3 20111117

首先,我想按日期对 user1 和按日期分组的总数求和
Total     Date
9 20111105
13 20111106
7 20111117

接下来我想按日期对除 user1 和 group by date 之外的所有其他用户的总数求和
Total     Date
8 20111105
11 20111106
4 20111117

最后我以某种方式希望我的存储过程获取上述数据并给我以下内容。我想从所有其他用户获得的总数中减去从“User1”获得的总数,但使用日期作为匹配参数。

最终结果如下:
Total     Date
-1 20111105
-2 20111106
-3 20111117

这有意义吗???

谢谢。

T。

最佳答案

这似乎有效。

with User1Totals as 
(
select [Name], sum(Total) as Total, [Date]
from YourTable
where [Name] = 'User1'
group by [Name], [Date]
),
OtherUsersTotals as
(
select sum(Total) as Total, [Date]
from YourTable
where [Name] <> 'User1'
group by [Date]
)

select isnull(t2.Total, 0) - isnull(t1.Total, 0), coalesce(t2.[Date], t1.[Date])
from User1Totals t1
full outer join OtherUsersTotals t2 on t1.[Date] = t2.[Date]
这将处理您的示例数据中的场景,以及其他两个场景 - 1) 当用户 1 在其他用户没有的一天有条目时,以及 2) 当其他用户在用户 1 没有的一天有数据时。
这里的工作示例 - https://data.stackexchange.com/stackoverflow/q/120224/

关于sql - 从同一表中的行计算 SQL 存储过程中的总数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8365190/

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