產品 , 數量 , 箱號
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