Как включить INSERT в оператор CASE WHEN - PullRequest
0 голосов
/ 06 мая 2019

Я хочу INSERT записей в таблицу, когда выполняется оператор CASE WHEN.В противном случае INSERT некоторые другие записи в таблицу.

SELECT CASE
    SELECT CASE WHEN @AmountPaid > (SELECT InvAmount from Invoice where InvNo = @InvNo) THEN
    INSERT INTO PaymentMemo (fld1,fld2,fld3) values(valu1,valu2,valu3)
    WHEN @AmountPaid = (SELECT InvAmount from Invoice where InvNo = @InvNo) THEN
    INSERT INTO PaymentMemo (fld1,fld2,fld3) values(valu4,valu5,valu6)
END

Как использовать оператор INSERT с двумя условиями.

1 Ответ

2 голосов
/ 06 мая 2019

используйте это:

insert into PaymentMemo (fld1,fld2,fld3)
SELECT CASE WHEN @AmountPaid > InvAmount then valu1 WHEN @AmountPaid = InvAmount then valu4 end,  
       CASE WHEN @AmountPaid > InvAmount then valu2 WHEN @AmountPaid = InvAmount then valu5 end,
       CASE WHEN @AmountPaid > InvAmount then valu3 WHEN @AmountPaid = InvAmount then valu6 end,
from Invoice where InvNo = @InvNo

Или используйте динамическое выражение, например:

declare @InsertStmnt nvarchar(max)

SELECT @InsertStmnt=  CASE
    SELECT CASE WHEN @AmountPaid > (SELECT InvAmount from Invoice where InvNo = @InvNo) THEN
    'INSERT INTO PaymentMemo (fld1,fld2,fld3) values(valu1,valu2,valu3)'
    WHEN @AmountPaid = (SELECT InvAmount from Invoice where InvNo = @InvNo) THEN
    'INSERT INTO PaymentMemo (fld1,fld2,fld3) values(valu4,valu5,valu6)'
END

exec (@InsertStmnt)

Вы можете передать valu1,valu2,valu3 или valu4,valu5,valu6 динамически

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...