所以我对 Microsoft 的 TSQL 比较陌生,我正在尝试编写一个简单的脚本,该脚本基于 IF 语句,判断 TransactionTotal 列的总和是否大于或小于前 7 天的 RepairCost 的总和。
USE MyBusinessDatabase
DECLARE @TotalSales money
DECLARE @TotalServices money
DECLARE @WeekPast date
SELECT @WeekPast = DATEADD(day, -7, GetDate())
现在,以下 Select/Where 语句是我的问题所在。定义 TotalSales 和 TotalServices 变量的 Select 语句可以正常工作,直到我添加Where 语句。从我所学到的来看,这些看起来是正确的,但是当我将它们添加到代码中时,我的 IF 语句停止工作。
SELECT @TotalSales = SUM(TransactionTotal) FROM Sales
WHERE TransactionDate <> NULL AND PaymentDate > @WeekPast
SELECT @TotalServices = SUM(PaymentTotal) FROM ServiceInvoices
WHERE PaymentDate <> NULL AND PaymentDate > @WeekPast
IF @TotalSales > @TotalServices
PRINT 'Total Sales > Total Services'
IF @TotalSales < @TotalServices
PRINT 'Total Sales < Total Services'
IF @TotalSales = @TotalServices
PRINT 'Total Sales = Total Services'
非常感谢,如果我可以帮助澄清任何事情,请告诉我! PS 作为我的数据结构 C/C++ 类的忠实粉丝,我发现这个 SQL 数据库类非常冗余和无聊,我很高兴摆脱它!我觉得我可以享受它,但我真的很难适应这门课,因为它是我的算法和数学类(class)占用我时间的事后想法。
最佳答案
您需要使用IS NOT NULL
而不是<> NULL
.
SQL 使用three valued logic (真/假/未知)和普通比较运算符产生 UNKNOWN
反对NULL
。
WHERE
子句需要评估为 true 才能从查询返回一行,而 UNKNOWN AND ...
永远不会发生这种情况
关于sql - 使用 WHERE 子句的变量声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8510667/