SQL Exists妙用

说明:

   以下SP表存在sp_id,sp_mdid,sp_gys,sp_txm的联合主键

 

一、以SP为准,将该表不存在的数据从ecv_spinfo 插入

 

insert into [192.192.192.249].wit_oa_scm.dbo.SP(sp_mdid,sp_id,sp_gys,sp_mc,sp_dw,sp_gg,sp_xz,sp_hsjj,sp_sl,sp_pp ,sp_bz2 ,sp_lb ,sp_txm,sp_yntt,sp_ynxp                                                                        ,sp_ynly                                                    ,sp_bz    ,add_date,sp_bc)
       select                                          '0001' ,spbm , sjbh ,spmc ,dw   ,gg   ,wlbzs,pjjj   ,sl   ,ppbmid,superbm,dlbmid,left(ltrim(spsmm),13) as spsmm,ztbz   ,case when datediff(month,tt.yjrq,getdate())<=1 then 'T' else 'F' end as sp_ynxp, case tt.jxlxid when '04' then 'T' else 'F' end  as sp_ynly,'',       getdate(),1
       from eSCashSystem.dbo.ecv_spinfo  tt
       where not exists(select * from  [192.192.192.249].wit_oa_scm.dbo.SP ta where tt.spbm=ta.sp_id and tt.sjbh=ta.sp_gys and ta.sp_mdid='0001' )
       and  convert(char(10),tt.ztrq,21)>=@v_DtBegin  and convert(char(10),tt.ztrq,21)<=@v_DtEnd

二、以ecv_spinfo 为准,将SP表不存在的数据从ecv_spinfo 插入

insert into [192.192.192.249].wit_oa_scm.dbo.SP(sp_mdid,sp_id,sp_gys,sp_mc,sp_dw,sp_gg,sp_xz,sp_hsjj,sp_sl,sp_pp ,sp_bz2 ,sp_lb ,sp_txm,sp_yntt,sp_ynxp                                                                        ,sp_ynly                                                    ,sp_bz    ,add_date,sp_bc)
       select                                          '0001' ,spbm , sjbh ,spmc ,dw   ,gg   ,wlbzs,pjjj   ,sl   ,ppbmid,superbm,dlbmid,left(ltrim(spsmm),13) as spsmm,ztbz   ,case when datediff(month,tt.yjrq,getdate())<=1 then 'T' else 'F' end as sp_ynxp, case tt.jxlxid when '04' then 'T' else 'F' end  as sp_ynly,'',       getdate(),1
       from [192.192.192.249].wit_oa_scm.dbo.SP    tt
       where not exists(select * from eSCashSystem.dbo.ecv_spinfo ta where tt.spbm=ta.sp_id and tt.sjbh=ta.sp_gys and tt.sp_mdid='0001' )
       and  convert(char(10),ta.ztrq,21)>=@v_DtBegin  and convert(char(10),ta.ztrq,21)<=@v_DtEnd

SQL中,CASE表达式用于根据条件返回不同的结果。在CASE表达式中,可以使用EXISTS谓词来嵌套子查询。引用提到了在CASE表达式中可以使用EXISTS谓词。这意味着可以在CASE表达式中使用EXISTS来判断某个条件是否存在。引用中的示例展示了在一个查询中使用了NOT EXISTS来筛选出满足条件的行。具体地说,在这个例子中,查询了表A的所有值,但排除了满足子查询条件的行。 修正后的示例展示了如何在CASE表达式和EXISTS中进行连接约束。在修正后的查询中,通过为a1和a2添加连接约束,确保了a1.year_month等于a2.year_month。同时,使用CASE表达式来判断a2.gmv是否大于100000000,并根据判断结果返回0或1。这样,只有当a2.gmv大于100000000时,才会返回1,进而满足NOT EXISTS的条件。 因此,修正后的查询将返回满足条件的行,并排除了满足子查询条件的行。这就是使用CASE和EXISTSSQL语句。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [SQL进阶-exists函数](https://blog.youkuaiyun.com/weixin_43131692/article/details/113744780)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [关于 SQL 中的 CASE 表达式,你都知道那些妙用?](https://blog.youkuaiyun.com/qq_19403251/article/details/126806475)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值