sql - 如何在 CASE WHEN 语句中包含 INSERT
问题描述
我想在语句完成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
具有两个条件的语句。
解决方案
使用它:
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
动态
推荐阅读
- python - 打印一行后,时间睡眠不循环工作
- javascript - 查找不包含在另一个对象数组中的数组中的元素
- ruby-on-rails - 验证名称没有制表符或反斜杠 - Rails
- jquery - 包含值时如何在 window.open 中使用 _self?
- machine-learning - 在新的未标记的单一观察或数据集上使用经过测试的机器学习模型?
- php - 每x分钟后php post函数调用
- laravel - Laravel 在数据获取上更改 img src
- docker - Nginx & Docker:自动代理路由
- vtiger - 项目模块,如何选择默认的“relatedto”字段值
- python - 我们可以使用win32com.client和xlrd在python中使用xlrd.openworkbook中的outlook.attachments对象而不保存excel文件吗