2013-05-20 41 views
1

好的,只是关于使用CASE函数的一个简短问题。不知道我是否能像我在下面的例子中看到的那样使用它,但是我想根据区域和银行代码来使用它。有人可以请这样做的语法协助。基于多个列的案例功能

表:BankInfo

BankCode  PayeeName  District 
    101   John Doe   333 
    101   Doe John   233 
    100   Jane Doe   333 

查询:

SELECT 
    PayeeName, BankCode 
    ,CASE dbo.BankInfo.district 
     WHEN 333 and BankCode = 101 THEN '79999' 
    END as BankTransit 

回答

3

由于您使用的两列,您需要将其更改为:

SELECT 
    PayeeName, BankCode, 
    CASE 
     WHEN dbo.BankInfo.district = 333 AND BankCode = 101 
     THEN '79999' 
    END as BankTransit 
+0

试过这个,但得到一个错误“一个非布尔类型的表达式在一个上下文中预期的条件,靠近'和'” –

0

一通用Northwind示例:

Select 
CustomerID , PostalCode , 
[MyMatch] = 
CASE 
    When CustomerID = 'ALFKI' and PostalCode = '12209' then 1 
    else 0 
END 

from [dbo].[Customers] 

Order by 3 DESC ,1,2 

和翻译........ 我有一个别名“MyDerived1Value”。还有一个“别的”声明。

Select 
PayeeName, BankCode , 
[MyDerivedValue] = 
CASE 
    When District = '333' and BankCode = '101' then '79999' 
    else null 
END 

from [dbo].BankInfo 

Order by 3 DESC ,1,2 

如果District和/或BankCode是int,则删除单引号。