标签:
12:38 2014-03-09 SQL Server技术交流(213291913)
有没有遇到这样的问题
表格2是结果,产品的汇总是类型不定的,有可能是‘ABC‘,‘BC‘,‘D‘多种可能都有,如何写SQL语句
我想到就是用游标,然后根据结果一条一条匹配。在表格1中增加一个汇总列,最后汇总成表2的样子。
有没有更好的方法呢?
下面是群友给出的答案
1 declare @temp table(产品 varchar(10),年 int,月 int,销量 int) 2 insert into @temp(产品,年,月,销量) 3 values(‘A‘,2013,1,23), 4 (‘B‘,2013,1,1), 5 (‘C‘,2013,1,23), 6 (‘D‘,2013,1,3), 7 (‘D‘,2013,2,8) 8 declare @temp1 table(产品 varchar(10),年 int,月 int,销量 int) 9 insert into @temp1(产品,年,月) 10 values(‘ABC‘,2013,1), 11 (‘AB‘,2013,1), 12 (‘ABD‘,2013,1), 13 (‘BCD‘,2013,1), 14 (‘CD‘,2013,2) 15 update @temp1 set 销量=( 16 select sum(销量) from @temp a 17 where charindex(a.产品,b.产品)>0 and a.年=b.年 and a.月=b.月) 18 from @temp1 b 19 select * from @temp 20 select * from @temp1
16:12 2013-08-20 之前有遇到类似解决方案的例子
1 --求出累计成交金额大于1000的那个日期 2 create table test1(createtime varchar (8),je int) 3 insert into test1 values(‘20130801‘,200) 4 insert into test1 values(‘20130806‘,300) 5 insert into test1 values(‘20130810‘,500) 6 insert into test1 values(‘20130816‘,250) 7 insert into test1 values(‘20130820‘,250) 8 select createtime,je,(select sum(je) from test1 where createtime<=a.createtime) zj 9 from test1 a
16:23 2015/4/16 删除重复数据,连续被两位同事问到完全相同的重复记录如何删除只保留一条
1 create table del_samerecords 2 (id int,remark varchar(10)) 3 go 4 insert into del_samerecords 5 select 1,‘a‘ 6 go 2 7 go 8 insert into del_samerecords 9 select 2,‘b‘ 10 go 3 11 go 12 --方式1 13 ;with a as 14 ( 15 select ROW_NUMBER() over(partition by id order by id) as rankid,* from del_samerecords 16 ) 17 delete from a where rankid>1 18 --方式2 19 while(1=1) 20 begin 21 delete top (1) del_samerecords 22 from del_samerecords, 23 (select id from del_samerecords group by id having count(*)>1) b 24 where del_samerecords.id=b.id 25 if @@ROWCOUNT=0 26 return 27 end
当然最容易理解的是将唯一记录insert到临时表,然后delete原表对应数据,再将临时表中的数据insert到原表
标签:
原文地址:http://www.cnblogs.com/Uest/p/3591494.html