2011-10-31 54 views
3

在查詢中使用Case語句似乎工作正常,只要您要匹配的唯一情況是字符串即可。但是如果你想把「>」大於(日期或數字)等,SSMS會自動在你的語句(如下)中添加撇號,就好像它是一個字符串一樣。查詢中的SQL CASE - 奇數行爲

我怎樣才能讓它接受「大於日期」或「大於號碼」等?

SSMS Adds ' around operators used in a CASE Statement in a Query

+4

不要使用查詢設計器? – Yuck

+1

SQL服務器中的查詢設計器與MS Acess中的查詢設計器差不多。只需修改原始SQL代碼即可修復該語句。 –

回答

4

有兩種類型的CASE expression

  • 簡單情況下表達的表達與一組簡單的表達式來確定結果。
  • 搜索的CASE表達式計算一組布爾表達式以確定結果。

你想要一個搜索 CASE表達式。這意味着WHEN應在CASE關鍵字後立即

CASE WHEN SoldDate <= SubjectDate THEN ... 
+0

+1 - 對不起,我們的答案接近,你擴大你的,因爲我正在寫我:) – JNK

1

您的CASE語句語法不正確。 WHEN後應CASE

直接來此:

CASE SoldDate WHEN ... 

應該是這樣:

CASE WHEN SoldDate <= SubjectDate THEN SoldFor ELSE EstSalePrice END 

其他信息

德有關CASE語法的其他示例,請參閱the MSDN docs

2

有兩種類型的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

您正在嘗試使用簡單語法和需要使用搜索語法通過明確寫出對每個評價的字段名和比較。

+0

+1返回的青睞。 :) –