对SQL Server查询的访问查询IIF语句

问题描述 投票:-1回答:1

问题:我正在尝试使以下代码在SQL Server中工作。我最初是在Access查询中编写代码的,但是现在我需要将其输入到SQL Server中。我的问题是IIF语句在SQL Server中不起作用。我曾尝试使用Case语句,但最终使我的SQL Server陷入困境,并且从未加载任何数据。关于如何转换要在SQL Server中使用的IIF语句有任何建议吗?对于任何反馈,我们都表示感谢。谢谢!

Access查询中编写的代码:

SELECT Customer.CustomerID, 
       IIf([ExpenseCode].[SysCode]>='1747',[Amount],0) AS Trains
FROM   Customer LEFT JOIN (Expense LEFT JOIN 
       ExpenseCode ON Expense.SysCode = ExpenseCode.SysCode) ON Customer.CustomerID = Expense.EntityID;

SQL Server中尝试的解决方案:

Select  Distinct r.CustomerID
    Case    
        WHEN t.SysCode = '1747'
        THEN e.Amount
        Else Null
    End AS Trains
From    ExpenseCode As t, Expense As e, Customer as r
sql sql-server ms-access iif
1个回答
0
投票

IIF()自2012年以来在SQL Server中受支持。您需要在MS Access查询中更改的是联接的语法。

尝试:

SELECT 
    c.CustomerID, 
    IIf(ec.SysCode >= 1747, Amount, 0) AS Trains
FROM   
    Customer c
    LEFT JOIN Expense e ON c.CustomerID = e.EntityID
    LEFT JOIN ExpenseCode ec ON e.SysCode = ec.SysCode;

我还向您的查询添加了表别名,因为它们使可读性更高。最后,我认为SysCode是一个数字,因此我删除了该值周围的引号以进行比较(它确实是一个字符串,您可以将引号放回去)。

© www.soinside.com 2019 - 2024. All rights reserved.