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

请问个SQL语句

2012-04-12 
请教个SQL语句现在有下面一个表RIV_NAMEUsernameRIV_NUMRIV2_EXAMINERIV2_DATEA张山71杨行镇2007-3-1211:1

请教个SQL语句
现在有下面一个表

RIV_NAME   Username   RIV_NUM       RIV2_EXAMINE       RIV2_DATE  
A                   张山             71                   杨行镇   2007-3-12   11:10:37  
A                   张山             83                   杨行镇   2007-3-12   13:57:28  
A                   张山             77                   杨行镇   2007-3-12   13:58:08  
B                   李四             91                   杨行镇   2007-2-23   13:52:14  
B                   李四             80                   月浦镇   2007-3-23   14:41:35  
B                   张山             73                   杨行镇   2007-3-23   15:05:05  
C                   王五             90                   杨行镇   2007-3-27   13:13:11  
C                   王五             94                   杨行镇   2007-4-27   13:19:12  
C                   王五             92                   杨行镇   2007-3-27   13:19:36  
C                   王五             95                   杨行镇   2007-4-27   13:23:16  

我想显示成
RIV_NAME       RIV_NUM1     RIV_NUM2   RIV_NUM3   RIV2_EXAMINE       RIV2_DATE  
A                         71                   83               77                 杨行镇                   3月
  B                       91                   80                 73                 杨行镇                   3月
C                         90                   92                   空                 杨行镇                   3月


请大家帮忙.我想不出怎么写.谢谢了

------解决方案--------------------


select RIV_NAME, RIV_NUM1, RIV_NUM2, RIV_NUM3, RIV2_EXAMINE, RIV2_DATE from [表] a where not exists(select 1 from [表] where riv_name=a.riv_name and riv2_date <a.riv2_date)
[解决办法]
--修改下數據,即可得到你的結果

Create Table 表
(RIV_NAMEVarchar(10),
UsernameNvarchar(10),
RIV_NUMInt,
RIV2_EXAMINENvarchar(10),
RIV2_DATE DateTime)
Insert 表 Select 'A ', N '张山 ', 71, N '杨行镇 ', '2007-3-12 11:10:37 '
Union All Select 'A ', N '张山 ', 83, N '杨行镇 ', '2007-3-12 13:57:28 '
Union All Select 'A ', N '张山 ', 77, N '杨行镇 ', '2007-3-12 13:58:08 '
Union All Select 'B ', N '李四 ', 91, N '杨行镇 ', '2007-3-23 13:52:14 '
Union All Select 'B ', N '李四 ', 80, N '月浦镇 ', '2007-3-23 14:41:35 '
Union All Select 'B ', N '张山 ', 73, N '杨行镇 ', '2007-3-23 15:05:05 '
Union All Select 'C ', N '王五 ', 90, N '杨行镇 ', '2007-3-27 13:13:11 '
Union All Select 'C ', N '王五 ', 94, N '杨行镇 ', '2007-4-27 13:19:12 '
Union All Select 'C ', N '王五 ', 92, N '杨行镇 ', '2007-3-27 13:19:36 '
Union All Select 'C ', N '王五 ', 95, N '杨行镇 ', '2007-4-27 13:23:16 '
GO
Declare @S Varchar(8000)
Select @S = 'Select RIV_NAME '
Select @S = @S + ', Max(Case ID When ' + Rtrim(ID) + ' Then Rtrim(RIV_NUM) Else ' ' ' ' End) As [RIV_NUM ' + Rtrim(ID) + '] ' From
(Select (Select Count(*) From 表 Where RIV_NAME = A.RIV_NAME And RIV2_DATE <= A.RIV2_DATE And Month(RIV2_DATE) = 3) As ID, * From 表 A Where Month(RIV2_DATE) = 3) A Group By ID
Select @S = @S+ ' , Max(RIV2_EXAMINE) As RIV2_EXAMINE, DateName(mm, RIV2_DATE) As RIV2_DATE From (Select (Select Count(*) From 表 Where RIV_NAME = A.RIV_NAME And RIV2_DATE <= A.RIV2_DATE And Month(RIV2_DATE) = 3) As ID, * From 表 A Where Month(RIV2_DATE) = 3) A Where Month(RIV2_DATE) = 3 Group By RIV_NAME, DateName(mm, RIV2_DATE) '
EXEC(@S)
GO
Drop Table 表
--Result
/*
RIV_NAMERIV_NUM1RIV_NUM2RIV_NUM3RIV2_EXAMINERIV2_DATE
A718377杨行镇三月
B918073杨行镇三月
C9092杨行镇三月
*/

热点排行