求解分类排序问题
数据库实例:   
 日期               	                           编号	                     项目 
 20070101         	001		A 
 20070101      	001		B 
 20070101      	001		A 
 20070101      	002		C 
 20070101      	002		B 
 20070105      	003		D 
 20070106      	001		F 
 20070107      	005		A 
 20070109      	001		G 
 20070109      	001		R 
 20070109      	001		O 
 20070109      	001		S   
 根据数据库中日期及编号生成ID编号(从0开始),希望结果如下:   
 日期	      编号	ID	项目 
 20070101	      001	0	A 
 20070101   	      001	1	B 
 20070101	      001	2	A 
 20070101	      002	0	C 
 20070101	      002	1	B 
 20070105	      003	0	D 
 20070106	      001	0	F 
 20070107	      005	0	A 
 20070109	      001	0	G 
 20070109	      001	1	R 
 20070109	      001	2	O 
 20070109	      001	3	S
------解决方案----------------------啊,早说啊   
 --没有主键要借助临时表   
 declare @Test table(日期 varchar(255),编号 varchar(255),项目 varchar(255)) 
 insert @Test 
 select  '20070101 ', '001 ', 'A ' union all 
 select  '20070101 ', '001 ', 'B ' union all 
 select  '20070101 ', '001 ', 'A ' union all 
 select  '20070101 ', '002 ', 'C ' union all 
 select  '20070101 ', '002 ', 'B ' union all 
 select  '20070105 ', '003 ', 'D ' union all 
 select  '20070106 ', '001 ', 'F ' union all 
 select  '20070107 ', '005 ', 'A ' union all 
 select  '20070109 ', '001 ', 'G ' union all 
 select  '20070109 ', '001 ', 'R ' union all 
 select  '20070109 ', '001 ', 'O ' union all 
 select  '20070109 ', '001 ', 'S '   
 select OrderNo = identity(int, 1, 1), * into #Temp from @Test order by 日期, 编号   
 select 
 日期, 
 编号, 
 ID = (select sum(1)-1 from #Temp where 日期=a.日期 and 编号=a.编号 and OrderNo <=a.OrderNo), 
 项目 
 from #Temp a    
 /*   
 20070101	001	0	A 
 20070101	001	1	B 
 20070101	001	2	A 
 20070101	002	0	C 
 20070101	002	1	B 
 20070105	003	0	D 
 20070106	001	0	F 
 20070107	005	0	A 
 20070109	001	0	G 
 20070109	001	1	R 
 20070109	001	2	O 
 20070109	001	3	S   
 (所影响的行数为 12 行)   
 */   
 drop table #Temp