簡體   English   中英

帶 case in where 子句的 sql

[英]sql with case in where clause

使用 SQL Server 2008——這是我最初的 SQL:

SELECT * 
FROM MY_TABLE
WHERE FLDID = 1111
  AND FLDFNAME = 'XXXX' 
  AND FLDLNAME = 'YYYY' 
  AND FLDDEPT = 'SCIENCE'

只有FLDREGISTERDATE小於某個日期才需要檢查FLDDEPT ,否則不需要檢查部門條件。

嘗試使用下面但出現錯誤

關鍵字“CASE”附近的語法不正確

如何解決這個問題??

SELECT * 
FROM MY_TABLE
WHERE FLDID = 1111
  AND FLDFNAME = 'XXXX' 
  AND FLDLNAME = 'YYYY' 

CASE 
   WHEN FLDREGISTERDATE < '2019-10-01' 
      THEN AND FLDDEPT = 'SCIENCE' 
      ELSE '' 
END

您可以使用布爾表達式執行此操作。

...
WHERE FLDFNAME = 'XXXX'
      AND FLDLNAME = 'YYYY' 
      AND (FLDDEPT = 'SCIENCE'
            OR FLDREGISTERDATE >= '2019-10-01'
             OR FLDREGISTERDATE IS NULL)
...

WHERE 子句需要一個條件。 CASE表達式只能輸出一個值。 相反,您可以執行以下操作:

SELECT * FROM MY_TABLE
WHERE FLDID = 1111
  AND FLDFNAME = 'XXXX' 
  AND FLDLNAME = 'YYYY' 
  AND FLDDEPT = CASE WHEN FLDREGISTERDATE < '2019-10-01' THEN 'SCIENCE' ELSE FLDDEPT END

現在,當FLDREGISTERDATE >= 2019-10-01因為FLDDEPT=FLDDEPT時,最后一個條件將返回TRUE FLDREGISTERDATE < '2019-10-01'的情況下,它將測試FLDDEPT = 'SCIENCE'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM