0
我試圖在一個包含多個選項的單個SQL腳本中獲得結果。終於得到了我需要的結果。SQL Server WHERE子句 - 建議
where
(RTRIM(FMLS.REGION)) IN (@Region) and
(RTRIM(FMB0.COUNTRY))IN (@Country) and
(RTRIM(FMB0.SITECODE)) IN (@Site) and
(RTRIM(FMB0.BLDGCODE)) IN (@Building) and
(
(
(RTRIM(FMA0.SPACETYPE) NOT IN ('A-OFF-AS','A-WKS-AS') AND ((RTRIM(FMA0.SPCODE) <> '') AND (FMA0.SPCODE IS NOT NULL)))
AND
(RTRIM(FMA0.SPACETYPE) NOT LIKE 'CR-%' AND ((RTRIM(FMA0.SPCODE) <> '') AND (FMA0.SPCODE IS NOT NULL)))
)
OR
(
(RTRIM(FMA0.SPACETYPE) = 'A-OFF-AS' AND RTRIM(FMA0.SPCODE) NOT LIKE 'A-OFF-%') OR
(RTRIM(FMA0.SPACETYPE) = 'A-WKS-AS' AND RTRIM(FMA0.SPCODE) NOT LIKE 'A-WKS-%')OR
(RTRIM(FMA0.SPACETYPE) LIKE 'CR-%' AND RTRIM(FMA0.SPCODE) NOT LIKE 'CR-%')
)
)
但是我擔心的是用於在這些兩行
(RTRIM(FMA0.SPACETYPE) NOT IN ('A-OFF-AS','A-WKS-AS') AND ((RTRIM(FMA0.SPCODE) <> '') AND (FMA0.SPCODE IS NOT NULL)))
AND
(RTRIM(FMA0.SPACETYPE) NOT LIKE 'CR-%' AND ((RTRIM(FMA0.SPCODE) <> '') AND (FMA0.SPCODE IS NOT NULL)))
,我還以爲它應該是一個OR,因爲我想要得到的結果,其中FMA0.SPCODE是空白的需要對於兩條線都是空的,像這樣
(RTRIM(FMA0.SPACETYPE) NOT IN ('A-OFF-AS','A-WKS-AS') AND ((RTRIM(FMA0.SPCODE) <> '') OR (FMA0.SPCODE IS NOT NULL)))
OR
(RTRIM(FMA0.SPACETYPE) NOT LIKE 'CR-%' AND ((RTRIM(FMA0.SPCODE) <> '') OR (FMA0.SPCODE IS NOT NULL)))
但是,如果我這樣做,我會得到錯誤的結果。我無法弄清楚,也許一直在看這個太長,或者在錯誤的地方有括號,但我看不到我做錯了什麼.....請幫助,它讓我生氣!