sql使用记录1

最近用到的sql语句,记录下。

使用环境:sqlserver2008R2

1、需求:表A中原始数据,表B中为新数据,要求如果表A中存在相同数据,则不写入这些数据,数据部分相同则更新数据,没有的数据则插入。

于是:

第一步,需要两表间去重,使用了

select * into B1 from B where  no exist (select 1 from A,B where a.列1=b.列1,...);

注意:如果比较的列中字段值有null的情况下,无法比较是否相同。这种方式只能适用于非空列。

第二步,将B1的整表插入到表A。(或者使用整表更新)

第三步,根据表A中某些字段判别删除旧的数据。(或者插入表B中表A没有的数据)


2、需求:表内计算,表内结构为树结构如图:表中字段均为varchar



 






需要将当前FLAG为1的数据的HS合计到他的FXH对应的ZXH的那条数据中的HS字段值中去。

于是,第一步将合计数据计算出来放入临时表。

select SUM(CONVERT(numeric(16,3),isnull(hs,'0'))) as HSHJ,vid,flag,FXH,PDH,CDH into #table2 from Table_1 group by vid,flag,FXH,PDH,CDH having flag='1'  
table2结果为:




第二步,用临时表的数据更新原始数据表,记得做求和。

update Table_1  set Table_1.HS=(CONVERT(numeric(16,3),isnull(b.HSHJ,'0'))+CONVERT(numeric(16,3),isnull(Table_1.HS,'0'))) from #table2 b where Table_1.zxh=b.fxh and Table_1.CDH=b.PDH
完成,结果如下:













3、需求:将多张表的数据合并到一张表中

使用了

select * from A union select * from B union select * from C

注意:表中字段名要相同,如果不同需要指定字段名,并as为第一张表中的字段名。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值