SQL用户定义函数问题

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)