在查詢中使用Case語句似乎工作正常,只要您要匹配的唯一情況是字符串即可。但是如果你想把「>」大於(日期或數字)等,SSMS會自動在你的語句(如下)中添加撇號,就好像它是一個字符串一樣。查詢中的SQL CASE - 奇數行爲
我怎樣才能讓它接受「大於日期」或「大於號碼」等?
在查詢中使用Case語句似乎工作正常,只要您要匹配的唯一情況是字符串即可。但是如果你想把「>」大於(日期或數字)等,SSMS會自動在你的語句(如下)中添加撇號,就好像它是一個字符串一樣。查詢中的SQL CASE - 奇數行爲
我怎樣才能讓它接受「大於日期」或「大於號碼」等?
有兩種類型的CASE expression:
- 簡單情況下表達的表達與一組簡單的表達式來確定結果。
- 搜索的CASE表達式計算一組布爾表達式以確定結果。
你想要一個搜索 CASE表達式。這意味着WHEN應在CASE關鍵字後立即。
CASE WHEN SoldDate <= SubjectDate THEN ...
+1 - 對不起,我們的答案接近,你擴大你的,因爲我正在寫我:) – JNK
您的CASE
語句語法不正確。 WHEN
後應CASE
直接來此:
CASE SoldDate WHEN ...
應該是這樣:
CASE WHEN SoldDate <= SubjectDate THEN SoldFor ELSE EstSalePrice END
其他信息
德有關CASE
語法的其他示例,請參閱the MSDN docs。
有兩種類型的CASE
表達式(from msdn):
甲簡單CASE
比較了等效性指定表達式ONLY
SELECT FieldName CASE WHEN 'Blah' THEN 'Foo' ELSE 'Bah' END
甲搜索CASE
可以做不等式但也有更詳細的語法:
SELECT CASE WHEN FieldName >= 'Blah' THEN 'Foo' ELSE 'Bah' END
您正在嘗試使用簡單語法和需要使用搜索語法通過明確寫出對每個評價的字段名和比較。
+1返回的青睞。 :) –
不要使用查詢設計器? – Yuck
SQL服務器中的查詢設計器與MS Acess中的查詢設計器差不多。只需修改原始SQL代碼即可修復該語句。 –