需要一些SQL的一些小帮助。我正在使用一个VARCHAR
值来确定在WHERE子句中使用哪种逻辑的情况,但我在写这个case语句时遇到了一些问题。T-SQL where子句case语句
where
(CASE WHEN @p_flag = 'ATA'
THEN (@p_start_ata IS NULL AND @p_end_ata IS NULL) OR (vso.poa_ata between @p_start_ata and @p_end_ata)
ELSE (@p_start_atd IS NULL AND @p_end_atd IS NULL) OR (vso.pol_atd between @p_start_atd and @p_end_atd)
)
线93的附近关键字的语法不正确 '是'。
它可能是一个小错误,但它让我很沮丧。也许有更好的方式来写这个?谢谢!
CASE语句只能提供**值** - 不是整个代码块。你需要重新安排你的逻辑 –