Я пытаюсь получить результаты в одном сценарии 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)))
, где я бы подумал, что это должно быть, или как я хочу, чтобы получить результаты, где FMA0.SPCODE пустым ИЛИ null для обеих линий, например,
(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)))
Но если я это сделаю, я получаю неправильные результаты. Я не могу понять это, возможно, слишком долго смотрел на это слишком долго или имел скобки в неправильном месте, но я не вижу, что я делаю неправильно ..... пожалуйста, помогите, это сводит меня с ума!