Kev*_*vin 1 sql user-defined-functions
我无法正常运行用户定义的功能.我在SQL Server 2000上运行.
我试图在"BillingTransactions"表中返回所有具有均衡余额的用户的表.我们的交易由RecordType字段指定; 0表示购买,1表示付款.所以我要做的是获取所有用户的列表,其中每个事务与RecordType 0的总和等于每个事务与RecordType 1的总和.这就是我的函数的内部部分现在看起来像:
SELECT DISTINCT UserName FROM BillingTransactions
WHERE (SELECT SUM(AMOUNT)
FROM BillingTransactions
WHERE [BillingTransactions].[RecordType]= 0
AND
[BillingTransactions].[UserName]= UserName)
=
(SELECT SUM(AMOUNT)
FROM BillingTransactions
WHERE [BillingTransactions].[RecordType]= 1
AND
[BillingTransactions].[UserName]= UserName)
Run Code Online (Sandbox Code Playgroud)
我觉得这不是最有效的方法...有没有其他方法你可以看到如何去做?谢谢!
Rem*_*anu 11
与任何SQL查询一样,效率将由数据的实际布局(表结构,索引结构)驱动,就像查询文本一样.以下是同一查询的一个版本,它表达相同的请求,但不那么逐字,可能更有效:
SELECT UserName
FROM BillingTransactions
GROUP BY UserName
HAVING 0 = SUM(
CASE RecordType
WHEN 1 THEN AMOUNT
WHEN 0 THEN -AMOUNT
ELSE 0
END);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
266 次 |
| 最近记录: |