[英]How to assign value using Case statement in where clause
我要实现的逻辑是,如果greatPlainsUserId
不为null,则使用它,否则使用userName
但我遇到语法错误。
...
WHERE (CASE
WHEN @greatPlainsUserId IS NULL
THEN BUYERID = @userName
ELSE BUYERID = @greatPlainsUserId
END)
AND...
卸下CASE
。 只需使用简单的逻辑:
WHERE ((@greatPlainsUserId IS NULL AND BUYERID = @userName) OR
(BUYERID = @greatPlainsUserId)
)
仅当@greatPlainsUserId IS NOT NULL
,第二个条件才有效,因此该条件是多余的。
或者:
WHERE BUYERID = COALESCE(@greatPlainsUserId, @userName)
这可能是最简单的逻辑。
只需使用ISNULL()
这两种情况。 运行以下测试代码以查看。 如果IssCost不为null,它将使用IssCost。 如果为空,则会显示“ Boooo!”。
对不起,我的示例数据很懒,我已经制作了数据,不想修改太多了:)
CREATE TABLE Payroll (
EmployeeID int NULL
,PlanCode varchar(10) NULL
,IssCost varchar(10) NULL
)
GO
INSERT INTO Payroll (EmployeeID, PlanCode, IssCost)
VALUES (1, 'Medical', '200')
,(1, 'Dental', '250')
,(1, 'Vision', '300')
,(2, 'Medical', '100')
,(2, 'Dental', '150')
,(2, 'Vision', NULL)
SELECT EmployeeID
,PlanCode
,ISNULL( IssCost, 'Boooo!')
FROM Payroll
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.