求写一条SQL语句

如下表

 

第一个表的内容由

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