gpt4 book ai didi

tsql - tqsl - 选择查询的结果在子查询中作为变量运行?

转载 作者:行者123 更新时间:2023-12-05 00:03:35 25 4
gpt4 key购买 nike

对于每个用户,我想生成一个汇总结果。但是,我一直遇到子查询返回超过 1 个结果的问题。

SELECT **[user]**, 
((SELECT SUM(amount)
FROM transactions
WHERE [user] = **[user]**
AND [type] = 'credit' ) -
(SELECT SUM(amount)
FROM transactions
WHERE [user] = **[user]**
AND [type] = 'debit' ))
FROM transactions

我如何获得 user来自 select在开始然后作为变量 user 运行在子查询中?

最佳答案

使用 CASE 简化求和:

SELECT user,SUM(CASE type WHEN 'credit' THEN amount WHEN 'debit' THEN -amount END)
from transactions
GROUP BY user

如果 credit 和 debit 是唯一有效的类型,那么它可以进一步简化为:
CASE type WHEN 'credit' THEN amount ELSE -amount END

使用子查询进行求和事件的答案,同时仍然从事务表中选择用户将执行多次求和 - 对于事务表中的每一行一次 - 所以如果一个用户有 5 个事务,他们将计算总和 5次(并显示 5 个结果行),我假设您不想要。

关于tsql - tqsl - 选择查询的结果在子查询中作为变量运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6845250/

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