【发布时间】:2014-04-14 23:55:28
【问题描述】:
我在尝试转换为存储过程的前端代码中有一个查询。前端代码中有条件逻辑,可以根据表单值构造正确的 SQL。我没有编写原始 SQL,但我受命进行此转换。
我面临的问题是我没有足够的知识/经验去做这件事。我也咨询了这些链接以寻求帮助,但它们并没有完全让我到达那里:
SQL: conditional statement in GROUP BY clause
SQL Case statement specifiying condition in where clause?
伪代码:
WHERE b.ACTIVE=1
AND YEAR(METRIC_YEAR) = @frmYear
IF @selOrg IS NOT NULL AND @selOrg != 'ALL'
IF @selOrg = 'org1'
AND ORG IN('org1','org2','org3') AND MEASURE_ID NOT IN(0,1,2,3,4)
ELSE
AND ORG = @selOrg
ELSE
AND MEASURE_ID NOT IN(0,1,2,3,4)
尝试如此简单的操作会导致“END 附近的语法不正确”错误。
WHERE b.ACTIVE=1
AND YEAR(METRIC_YEAR) = @frmYear
AND
CASE @selOrg
WHEN 'org1' THEN ORG IN('org1','org2','org3') AND MEASURE_ID NOT IN(0,1,2,3,4)
END
我想做的事可能吗?如果是这样,我看不到什么?
【问题讨论】:
标签: sql sql-server case