--测试数据
-----------------------------------------
1.--添加
--表1
CREATE TABLE [dbo].[MyUserInfo](
[myname] [nvarchar](20) not null,--姓名
[kemu]  [nvarchar](20) not NULL,--语文 数学等。
[mynumber] [int] not NULL--学号
) ON [PRIMARY] --数据INSERT INTO [dbo].[MyUserInfo]([myname],[kemu],[mynumber]) VALUES('jack','语文' ,10001)
INSERT INTO [dbo].[MyUserInfo]([myname],[kemu],[mynumber]) VALUES('jack','数学' ,10001)INSERT INTO [dbo].[MyUserInfo]([myname],[kemu],[mynumber]) VALUES('Fans','语文' ,10002)
INSERT INTO [dbo].[MyUserInfo]([myname],[kemu],[mynumber]) VALUES('Fans','数学' ,10002)
--【当 [dbo].[MyUserInfo] 选择学号10001,则返回】select * from MyUserInfo where mynumber=10001
--jack 语文 10001
--jack 数学 10001--表2
CREATE TABLE [dbo].[MyAchievement](
    [kemu]  [nvarchar](20) not null,--语文 数学等。
[Fenshu]  [int] not NULL,--语文 数学等。
[mydate]  [datetime]
) ON [PRIMARY] insert into  [dbo].[MyAchievement]([kemu],[Fenshu],[mydate]) values ('语文',80,'2012-8-1')
insert into  [dbo].[MyAchievement]([kemu],[Fenshu],[mydate]) values ('语文',80,'2012-9-1')
insert into  [dbo].[MyAchievement]([kemu],[Fenshu],[mydate]) values ('语文',80,'2012-8-8')
insert into  [dbo].[MyAchievement]([kemu],[Fenshu],[mydate]) values ('数学',80,'2012-8-1')
insert into  [dbo].[MyAchievement]([kemu],[Fenshu],[mydate]) values ('语文',80,'2012-10-1')
insert into  [dbo].[MyAchievement]([kemu],[Fenshu],[mydate]) values ('数学',80,'2012-9-1')--select * from MyAchievement
--问题:从表一10001--得到 语文 和 数学,  语文和数学 在表2中时间最大的值。--希望得到的是时间最大的, 这个2条书面--语文 80 2012-10-01 00:00:00.000
--数学 80 2012-09-01 00:00:00.000

解决方案 »

  1.   


    --直接這樣就好了
    select * from MyAchievement a where mydate=(select max(mydate) from [MyAchievement] b where a.[kemu]=b.[kemu]);
      

  2.   

    select kemu,Fenshu,mydate
    from (select a.kemu,b.fenshu,b.mydate,row_number()over(order by b.mydate desc) rn  from MyUserInfo a,MyAchievement b
    where a.kemu = b.kemu and a.mynumber = '10001') where rn = 1 
      

  3.   


    谢谢2位  好像不行吧! 必须关联表1怎么没日期的比较啊MAX...简单说:用 10001 表1 对应  语文 数学 (2个类别)
    再以---语文 数学 为条件  在集合中 求 日期最大的 (结果应该是2条数据)
    请帮忙  谢谢!
      

  4.   


    kemu 这个条件 要10001 关联出
      

  5.   

    你的表格式不對吧:表MyAchievement中哪個字段關聯到表的mynumber字段,關聯不到,你如何按表MyUserInfo來取表MyAchievement中的記錄,是否你少提供了一列
      

  6.   


    谢谢 帮忙。  我这个是测试数据啊~~
    1:从表1 10001  可以的得到--- 语文 数学(关联....MyAchievement)2:再用 -- 语文 数学 关联表2  ---取他们日期最大的值。得到的结果:--语文    80    2012-10-01 00:00:00.000
    --数学    80    2012-09-01 00:00:00.000不知道如何写....
    写存储过程估计比较容易实现,PL\SQL 不知道怎么写。
      

  7.   


    --這樣取
    select * from MyAchievement a 
    where exists(select 1 from MyUserInfo where mynumber=10001 and MyUserInfo.kemu=a.kemu)
    and mydate=(select max(mydate) from [MyAchievement] b where a.[kemu]=b.[kemu]);
      

  8.   


    OK 你刚才说的  有个字段表  关联MyAchievement  ,的确是有。(不好意思)
    (MyAchievement 中这样的字段 mynumber  10001,10002)
      

  9.   

    谢谢,你很牛X上面的测试OK。刚才 测试数据 我遗漏了MyAchievement 字段 mynumber  如果有是否不用这样写呢