Знатокам sql - как правильно изменить существующий код, в T-SQL?

NtNet
Уже с Приветом
Posts: 4307
Joined: 15 Jul 2015 03:22

Знатокам sql - как правильно изменить существующий код, в T-SQL?

Post by NtNet »

Такая задача - (любые мысли и подсказки приветствуются).

Есть уже существующий код на T-SQL, --- приложила его в pdf аттачмент.
Моя задача - добавить к нему логический параметр - @Depreciation, в результате чего код будет работать следующим образом:

@Depreciation = 0
Должны выдаваться только записи, где DepreciationAcc = 0

@Depreciation = 1
Должны выдаваться записи, где DepreciationAcc = 0 или DepreciationAcc = 1
(т.е - где есть 0, 1)

В вордовском аттачменте - изменения которые касаются моеи проблемы - выделены желтым. (Остальная часть этого большого кода not really relevant)
Для достижения своей цели я перенесла CASE statement в WHERE (выделено желтым, а также красным /* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */

Работает, но когда @Depreciation = 1, то выдает записи ТОЛЬКО где trans.Amount = 0.
А нужно их все...

Где моя ошибка? Как написать условие чтобы получить результат описанный выше?

Спасибо, аз олвеис !!!

PS-
Прилагаю также частичную картинку результата, на всякий случай
You do not have the required permissions to view the files attached to this post.
User avatar
ie
Уже с Приветом
Posts: 11093
Joined: 15 May 2002 02:09
Location: Boston, MA

Re: Знатокам sql - как правильно изменить существующий код, в T-SQL?

Post by ie »

NtNet wrote: 20 Dec 2018 08:32 А нужно их все...

(CASE WHEN (NOT (acct.[GLAccountCode] IN (N'9040',N'9047',N'4130')) AND (@Depreciation = 0))
THEN 0 ELSE trans.Amount END)=0

trans.Amount -- надо б заменить на что-то...
не люблю кэйсы... :noo:
слишком сложно их читать.
может завести функцию под это дело?
NtNet
Уже с Приветом
Posts: 4307
Joined: 15 Jul 2015 03:22

Re: Знатокам sql - как правильно изменить существующий код, в T-SQL?

Post by NtNet »

Never mind!
Уже знаю как нужно)) !!!
Вопрос снимается

Return to “Вопросы и новости IT”