【发布时间】:2019-07-14 23:37:17
【问题描述】:
我声明了 2 个变量,即 @empCode 和 @centerCode。一个中心包含多名员工。我有另一个变量是@IsEmployeeBased
现在如果@IsEmployeeBased = 1,那么它将使用@empCode,否则它将使用@centerCode。
我的查询是这样的。
DECLARE @IsEmployeeBased INT = 1;
DECLARE @empCode INT = 1;
DECLARE @centerCode INT = 3;
SELECT * FROM Employee
WHERE Department = 'Information Tech'
AND
CASE WHEN @IsEmployeeBased = 1 THEN ID = @empCode ELSE CenterCode = @centerCode
这是返回错误,我认为 CASE 在 where 子句中是不允许的。有什么方法可以让所需的查询正常工作吗?
这里是示例数据:
CREATE TABLE Employee
(
ID Int,
EmployeeName VARCHAR(25),
Department VARCHAR(25),
CenterCode INT
)
INSERT INTO Employee VALUES (1, 'Asim', 'Information Tech', 4)
INSERT INTO Employee VALUES (2, 'Ali', 'Information Tech', 2)
INSERT INTO Employee VALUES (3, 'Isaac', 'Information Tech', 3)
INSERT INTO Employee VALUES (4, 'Swagger', 'Information Tech', 4)
INSERT INTO Employee VALUES (5, 'Nadine', 'Information Tech', 2)
INSERT INTO Employee VALUES (6, 'Julie', 'Information Tech', 4)
INSERT INTO Employee VALUES (7, 'Meachum', 'Information Tech', 3)
INSERT INTO Employee VALUES (8, 'Bob Lee', 'Information Tech', 4)
【问题讨论】:
标签: sql-server