/*
已知表T_Sn记录如下
fdBoxSn fdSn
BZ201400000001 YW1A0000000001
BZ201400000001 YW1A0000000002
BZ201400000001 YW1A0000000003
BZ201400000001 YW1A0000000004
BZ201400000002 YW1A0000000005
BZ201400000002 YW1A0000000006
BZ201400000002 YW1A0000000007
BZ201400000002 YW1A0000000008
BZ201400000003 YW1A0000000009
BZ201400000003 YW1A0000000010
如何写一查询,显示如下结果
fdBoxSn fdSn
BZ201400000001 YW1A0000000001-YW1A0000000004
BZ201400000002 YW1A0000000005-YW1A0000000008
BZ201400000003 YW1A0000000009-YW1A0000000010
*/
----------建立测试环境(MSSQL2000)
if exists (select * from sysobjects where id = object_id(N'T_Sn') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
begin
drop table T_Sn
end
go
CREATE TABLE [T_Sn] (
[fdBoxSn] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[fdSn] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
insert T_Sn(fdBoxSn,fdSn) select 'BZ201400000001','YW1A0000000001'
insert T_Sn(fdBoxSn,fdSn) select 'BZ201400000001','YW1A0000000002'
insert T_Sn(fdBoxSn,fdSn) select 'BZ201400000001','YW1A0000000003'
insert T_Sn(fdBoxSn,fdSn) select 'BZ201400000001','YW1A0000000004'
insert T_Sn(fdBoxSn,fdSn) select 'BZ201400000002','YW1A0000000005'
insert T_Sn(fdBoxSn,fdSn) select 'BZ201400000002','YW1A0000000006'
insert T_Sn(fdBoxSn,fdSn) select 'BZ201400000002','YW1A0000000007'
insert T_Sn(fdBoxSn,fdSn) select 'BZ201400000002','YW1A0000000008'
insert T_Sn(fdBoxSn,fdSn) select 'BZ201400000003','YW1A0000000009'
insert T_Sn(fdBoxSn,fdSn) select 'BZ201400000003','YW1A0000000010'
GO
select * from T_Sn
------解决思路----------------------
select fdBoxSn,min(fdsn)+'~'+max(fdsn) as fdsn
from T_Sn
group by fdBoxSn