如下表
第一个表的内容由
select
*
from
indextable2
order by
aName,index1,index2
所得
第二个表是第一个表相同名字的第一项 (order by index1, index2)
求第二个表的SQL语句
建表个数据的SQL语句如下
if exists (select * from sysobjects where id = OBJECT_ID('[IndexTABLE2]') and OBJECTPROPERTY(id, 'IsUserTable') = 1) DROP TABLE [IndexTABLE2]
CREATE TABLE [IndexTABLE2] ( [aName] [varchar] (255) NULL , [index1] [int] NULL , [index2] [int] NULL , [aValue] [varchar] (255) NULL )
ALTER TABLE [IndexTABLE2] WITH NOCHECK ADD CONSTRAINT [PK_IndexTABLE2] PRIMARY KEY NONCLUSTERED ( [id] )
INSERT [IndexTABLE2] ( [id] , [aName] , [index1] , [index2] , [aValue] ) VALUES ( 1245 , 'A' , 11 , 0 , 'chengdu' )
INSERT [IndexTABLE2] ( [id] , [aName] , [index1] , [index2] , [aValue] ) VALUES ( 5454 , 'c' , 50 , 130 , 'vb' )
INSERT [IndexTABLE2] ( [id] , [aName] , [index1] , [index2] , [aValue] ) VALUES ( 5465 , 'A' , 10 , 0 , 'beijing' )
INSERT [IndexTABLE2] ( [id] , [aName] , [index1] , [index2] , [aValue] ) VALUES ( 6566 , 'A' , 10 , 1 , 'shanghai' )
INSERT [IndexTABLE2] ( [id] , [aName] , [index1] , [index2] , [aValue] ) VALUES ( 7657 , 'B' , 100 , 10 , 'zhongguo' )
INSERT [IndexTABLE2] ( [id] , [aName] , [index1] , [index2] , [aValue] ) VALUES ( 43432 , 'B' , 110 , 30 , 'faguo' )
INSERT [IndexTABLE2] ( [id] , [aName] , [index1] , [index2] , [aValue] ) VALUES ( 43566 , 'A' , 11 , 1 , 'guilin' )
INSERT [IndexTABLE2] ( [id] , [aName] , [index1] , [index2] , [aValue] ) VALUES ( 54354 , 'C' , 60 , 90 , '.net' )
INSERT [IndexTABLE2] ( [id] , [aName] , [index1] , [index2] , [aValue] ) VALUES ( 543543 , 'B' , 110 , 20 , 'deguo' )
INSERT [IndexTABLE2] ( [id] , [aName] , [index1] , [index2] , [aValue] ) VALUES ( 545435 , 'C' , 50 , 120 , 'c' )
INSERT [IndexTABLE2] ( [id] , [aName] , [index1] , [index2] , [aValue] ) VALUES ( 765974 , 'B' , 110 , 10 , 'meiguo' )
INSERT [IndexTABLE2] ( [id] , [aName] , [index1] , [index2] , [aValue] ) VALUES ( 5435423 , 'C' , 50 , 100 , 'java' )
INSERT [IndexTABLE2] ( [id] , [aName] , [index1] , [index2] , [aValue] ) VALUES ( 54354343 , 'C' , 50 , 110 , 'c++' )
select * from indextable2 as a
where id=(
select top 1 id from indextable2 as b
where a.aName=b.aName
order by index1,index2)
select id,aName,min(index1),min(index2),aValue from indextable2 group by aName order by index1, index2;
select distinct aname,id,min(index1),index2,avalue from indextable2 group by aname;
大概思路,自己调下 就好了
SELECT NEWID() AS RowNumber, id, aName, index1, index2, aValue, ROW_NUMBER() OVER (ORDER BY index1, index2) AS numid
FROM IndexTABLE2
ORDER BY index1, index2
得到辅助列NUMID
select indextable2.* from indextable2, (select min(id) from indextable2 group by aName) as t where indextable2.id = t.id
select id,distinct aname,min(index1),min(index2),avalue
from indextable2
order by index2,index1