Я искал в Интернете, но не могу найти решение для моей проблемы (но, возможно, я использую неправильные ключевые слова;)).Есть ли способ добавить логический оператор в предложение WHERE с помощью операторов CASE? - T-SQL
У меня есть хранимая процедура, которая выполняет автоматическую проверку (каждую ночь) для кучи записей. Однако иногда пользователь хочет сделать одну и ту же проверку для отдельной записи вручную. Я думал о вызове хранимой процедуры с параметром, когда установленный исходный оператор SELECT (который проходит через все записи) должен получить оператор AND с указанным идентификатором записи. Я хочу сделать это так, чтобы мне не пришлось копировать весь оператор select и изменять его только для ручной части.
Оригинальное заявление выглядит следующим образом:
DECLARE GenerateFacturen CURSOR LOCAL FOR
SELECT TOP 100 PERCENT becode, dtreknr, franchisebecode, franchisenemer, fakgroep, vonummer, vovolgnr, count(*) as nrVerOrd,
FaktuurEindeMaand, FaktuurEindeWeek
FROM (
SELECT becode, vonummer, vovolgnr, FaktuurEindeMaand, FaktuurEindeWeek, uitgestfaktuurdat, levdat, voomschrijving, vonetto,
faktureerperorder, dtreknr, franchisebecode, franchisenemer, fakgroep, levscandat
FROM vwOpenVerOrd WHERE [email protected] AND levdat IS NOT NULL AND fakstatus = 0
AND isAllFaktuurStukPrijsChecked = 1 AND IsAllFaktuurVrChecked = 1
AND (uitgestfaktuurdat IS NULL OR uitgestfaktuurdat<[email protected])
) sub
WHERE faktureerperorder = 1
GROUP BY becode, dtreknr, franchisebecode, franchisenemer, fakgroep, vonummer, vovolgnr,
FaktuurEindeMaand, FaktuurEindeWeek
ORDER BY MIN(levscandat)
В WHERE faktureerperorder = 1
я придумал что-то вроде этого:
WHERE faktureerperorder = 1 AND CASE WHEN @myParameterManual = 1 THEN [email protected] ELSE 1=1 END
Но это не работает. @myParameterManual
указывает, следует ли выбрать только конкретную запись. Идентификатор записи - [email protected]
. Я думал, установив 1=1
Я бы получил все записи.
Любые идеи о том, как достичь моей цели (возможно, более эффективных идей или лучших идей)?
'WHERE faktureerperorder = 1 AND (@myParameterManual = 0 ИЛИ vonummer = @vonummer)' – Eric
Does [this] (http://stackoverflow.com/questions/10256848/can-i-use-case-statement-in-a-join-condition/10260297#10260297) ответьте на помощь? – HABO