产品 , 数量 , 箱号
A , 2 , 1
A , 2 , 2
A , 2 , 3
B , 1 , 4
B , 1 , 4
C , 3 , 5
C , 3 , 6
查询结果需要将箱号统计出来:如
产品 , 数量 , 箱号范围 , 箱数
A , 6 , 1-3 , 3
B , 2 , 4 , 1
C , 6 , 5-6 , 2
select 产品, 数量=sum(数量), 箱号范围=case when max(箱号)=min(箱号) then convert(varchar(20),max(箱号))
else convert(varchar(20),min(箱号))+'-'+convert(varchar(20),max(箱号)) end, 箱数=max(箱号)-min(箱号)+1
from B_HP
group by 产品
order by 产品
-----------------------------------------------------------------------------------------------------------------------------------------------
表结构和内容如下i
d ptah uid3
fa_q.jpg 2655
aa_s.jpg 2659
ad_s.jpg 26513
ca_q.jpg 26615
fd_s.jpg 26632
ja_q.jpg 267
文件名有两种类型_q.jpg和_s.jpg,希望求得结果是_q.jpg的文件名和_s.jpg的文件数量如下
fa_q.jpg 2 265
ca_q.jpg 1 266
ja_q.jpg 0 267
select t1.ptah,(select COUNT(*) from #tb t2 where RIGHT(t2.ptah,6)='_s.jpg' and t2.[uid]=t1.[uid]) as num,t1.[uid] from #tb t1where RIGHT(t1.ptah,6)='_q.jpg'
select a.[ptah],count(b.[ptah]) as cnt,a.uidfrom tb aleft join tb b on a.uid=b.uid and b.[ptah] like '%_s.jpg'where a.[ptah] like '%_q.jpg'group by a.[ptah],a.uid