#sql #sql-server-2008
#sql #sql-server-2008
Вопрос:
Мне нужно сделать запрос для предоставления некоторых условий.
Например: если c_Fk_CodCiiu4 равен 0112.01 или 0126.01, то ti_Fk_CodUnidadMedida должно быть = 01 или 02 или 03. В той же таблице, если c_Fk_CodCiiu4 равен 0113.01 или 0113.2, тогда ti_Fk_CodUnidadMedida должно быть = 14 или 17 или 19. В той же таблице, если c_Fk_CodCiiu4 равен 0114.01 Или 0114.02 или 0114.03, тогда ti_Fk_CodUnidadMedida должен быть = 01 или 19 или 17 …. и т.д.
У меня также есть два других условия:
- Если c_Fk_IdBoleta = 45550711
- Если sembrado.si_Fk_IdDesglose = desglose.si_Pk_IdDesglose
Хорошо, теперь вот таблицы, в которых находятся эти переменные.
И вот мой запрос, в котором мне нужно поместить все условия внутри запроса, как я могу это сделать?
SELECT
'Pregunta (12).Cultivo Anual' as Numero_Pregunta,
c_Fk_IdBoleta as Numero_Boleta,
'La unidad de medida, no corresponde al tipo de cultivo.' as Detalle_Error,
sembrado.si_Pk_NumSiembra
FROM
Clt_Sembrado as sembrado, Clt_Desglose as desglose
WHERE ((sembrado.c_Fk_IdBoleta = 45550711)
AND(sembrado.si_Fk_IdDesglose = desglose.si_Pk_IdDesglose)
AND (c_Fk_CodCiiu4 LIKE
CASE WHEN (c_Fk_CodCiiu4 = 0112.01
OR c_Fk_CodCiiu4 = 0126.01)
AND
(sembrado.ti_Fk_CodUnidadMedida <> 1
OR sembrado.ti_Fk_CodUnidadMedida <> 2
OR sembrado.ti_Fk_CodUnidadMedida <> 3
OR sembrado.ti_Fk_CodUnidadMedida <> 8)
THEN NULL))
ELSE
((desglose.c_Fk_CodCiiu4 = 0113.01
OR desglose.c_Fk_CodCiiu4 = 0113.02)
AND(sembrado.ti_Fk_CodUnidadMedida <> 14
OR sembrado.ti_Fk_CodUnidadMedida <> 17
OR sembrado.ti_Fk_CodUnidadMedida <> 19)))
ELSE
((desglose.c_Fk_CodCiiu4 = 0114.01
OR desglose.c_Fk_CodCiiu4 = 0114.02)
AND(sembrado.ti_Fk_CodUnidadMedida <> 1
OR sembrado.ti_Fk_CodUnidadMedida <> 19
OR sembrado.ti_Fk_CodUnidadMedida <> 17)))
Ответ №1:
Вы можете воспользоваться операторами NOT IN и IN .
AND(sembrado.ti_Fk_CodUnidadMedida NOT IN (1, 19, 17)