在查询中使用Case语句似乎可以正常工作,只要您想要匹配的唯一案例是字符串。但是如果你想把“>”大于(日期或数字)等,SSMS会自动在您的语句(下方)周围添加撇号,就像它是一个字符串一样。
如何让它接受“大于号码”或“大于号码”等等?
答案 0 :(得分:4)
CASE expression有两种类型:
- 简单的CASE表达式将表达式与一组简单表达式进行比较,以确定结果。
- 搜索到的CASE表达式计算一组布尔表达式以确定结果。
您需要已搜索 CASE表达式。这意味着WHEN应该在CASE关键字后立即 。
CASE WHEN SoldDate <= SubjectDate THEN ...
答案 1 :(得分:2)
有两种类型的CASE
表达式(from msdn):
简单 CASE
比较仅等同于
SELECT FieldName CASE WHEN 'Blah' THEN 'Foo' ELSE 'Bah' END
搜索 CASE
也可以做不等式,但语法更详细:
SELECT CASE WHEN FieldName >= 'Blah' THEN 'Foo' ELSE 'Bah' END
您正尝试使用简单语法,并且需要使用搜索语法,明确写出每个评估的字段名称和比较。
答案 2 :(得分:1)
您的CASE
语句语法不正确。 WHEN
应该在CASE
:此:强>
CASE SoldDate WHEN ...
应该是这样:
CASE WHEN SoldDate <= SubjectDate THEN SoldFor ELSE EstSalePrice END
其他信息
有关CASE
语法的其他示例,请查看the MSDN docs。