首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

看看这个查询语句怎么写

2012-06-20 
各位高手看看这个查询语句如何写!有数据表:B_HP;内容如下:产品,数量, 箱号A,2,1A,2,2A,2,3B,1,4B,1,4C,3,5

各位高手看看这个查询语句如何写!
有数据表:B_HP;

内容如下:

  产品 , 数量 , 箱号
  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

请高手帮忙看下,如何将取得箱号的范围,和当前产品的箱数数量????

[解决办法]

SQL code
select 产品,    数量=sum(数量),    箱号范围=case when max(箱号)=min(箱号) then convert(varchar(20),max(箱号))        else convert(varchar(20),min(箱号))+'-'+convert(varchar(20),max(箱号)) end,    箱数=max(箱号)-min(箱号)+1from B_HPgroup by 产品order by 产品
[解决办法]
SQL code
if object_id('[tb]') is not null drop table [tb]gocreate table [tb]([产品] varchar(1),[数量] int,[箱号] int)insert [tb]select 'A',2,1 union allselect 'A',2,2 union allselect 'A',2,3 union allselect 'B',1,4 union allselect 'B',1,4 union allselect 'C',3,5 union allselect 'C',3,6goselect 产品,  sum(数量) as 数量,  箱号范围=case when min(箱号)=max(箱号) then ltrim(min(箱号)) else ltrim(min(箱号))+'-'+ltrim(max(箱号)) end,  count(distinct 箱号) as 箱数from tbgroup by 产品/**产品   数量          箱号范围                      箱数---- ----------- ------------------------- -----------A    6           1-3                       3B    2           4                         1C    6           5-6                       2(3 行受影响)**/ 

热点排行