1

我有一个表,其中每个条目的序列号可以是 1 或 2。我想根据当前年份的值选择其中一个选项。是否可以在 where 语句中执行以下操作:

(CASE sequence_number 
    WHEN cy.curyr < '41' THEN '1' 
    ELSE '2' 
       END ) sequence_number
4

2 回答 2

1

正确的语法是:

(CASE WHEN cy.curyr < '41' THEN '1' 
      ELSE '2' 
 END ) as sequence_number

就您的查询而言,您只需删除初始的sequence_number.

另外,您确定要进行字符串比较吗?这样做时,'5' < '41' 的计算结果为 false。

如果您不想要字符串比较:

(CASE WHEN cast(cy.curyr as int) < 41 THEN 1
      ELSE 2 
 END ) as sequence_number
于 2013-01-28T15:57:16.607 回答
1

where 子句中的正确方法是

and sequence_number = case when cy.curyr < '41' then 1 else 2 end

curyr一个字符串吗?

于 2013-01-28T16:00:53.853 回答