我似乎无法使IF语句在SQL Server的WHERE子句中工作。
基本上,如果{'slot_id': {0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8}, 'class': {0: 'A', 1: 'B', 2: 'C', 3: 'C', 4: 'C', 5: 'C', 6: 'D', 7: 'E'}, 'day': {0: 'Monday', 1: 'Tuesday', 2: 'Wednesday', 3: 'Wednesday', 4: 'Thursday', 5: 'Tuesday', 6: 'Thursday', 7: 'Saturday'}, 'base_date': {0: datetime.date(2019, 1, 21), 1: datetime.date(2019, 1, 22), 2: datetime.date(2019, 1, 23), 3: datetime.date(2019, 1, 23), 4: datetime.date(2019, 1, 24), 5: datetime.date(2019, 1, 22), 6: datetime.date(2019, 1, 24), 7: datetime.date(2019, 1, 26)}}
example['base_date'] = pd.to_datetime(example['base_date'].astype(str), format='%d%m%Y')
example['base_date'] = example['base_date'].dt.date
为0,我想跳过IF语句中的这两行。
这是我所拥有的:
@PK
也尝试过:
WHERE
IF (@PK <> 0)
pk.ID >= @PK
AND pk.ID < (@PK + 500)
ELSE
Set_No = Set_No
END
AND Set_No IN (1,2,3,4)
编辑:我搜索了SO,并尝试了发现的几处内容(包括上面的内容),但它们没有效果。
答案 0 :(得分:4)
我认为使用基本的布尔逻辑运算符可以更轻松地编写所需的逻辑:
WHERE (@PK = 0 OR (pk.ID >= @PK AND pk.ID < @PK + 500)) AND
Set_No IN (1, 2, 3, 4)