现有表A
ID Name
--------
1  aaa
2  bbb
3  ccc表B
ID Name Value Date Time
------------------------
1  aaa  1.017 20060506 162341
2  ccc  1.025 20060504 104253
3  bbb  2.014 20060404 091523
4  ccc  1.052 20060301 081524
5  aaa  1.034 20060506 094232
6  bbb  1.225 20060302 103214我希望通过执行SQL得到下面结果ID Name Value
---------------
1  aaa  1.017
2  bbb  2.014
3  ccc  1.025即查询出所有Name所对应的最新的Value

解决方案 »

  1.   

    Select 
    A.ID,
    A.Name,
    B.Value
    From
    A
    Inner Join
    B
    On A.Name = B.Name
    Inner Join
    (Select Name, Max([Date] + [Time] )As [DateTime] From B Group By Name) C
    On B.Name = C.Name And B.[Date] + B.[Time] = C.[DateTime]
      

  2.   

    select 表a.id,表a.name,表b.value from 表a,表b
    where 表a.id=表b.id and 表a.name=表b.name order by 表a.id
      

  3.   

    TO:paoluo(一天到晚游泳的鱼) 
    这个语句还有点小问题,就是当时间完全一样时
    统计出来的结果就会出错,Name不惟一了
    就是在这种情况下还需要去掉其它相同的记录
      

  4.   

    trySelect 
    A.ID,
    A.Name,
    B.Value
    From
    A
    Inner Join
    B
    On A.Name = B.Name
    Inner Join
    (
    Select 
    Name, Max(ID) As ID 
    From 
    B
    Inner Join
    (Select Name, Max([Date] + [Time] )As [DateTime] From B Group By Name) C
    On B.Name = C.Name And B.[Date] + B.[Time] = C.[DateTime]
    Group By Name) D
    On B.Name = D.Name And B.ID = D.ID
      

  5.   

    Select B.Name,B.Value
    From B,(Select Name,max(Date+Time) as Date From B Group by Name) Table1
    Where B.Date+B.Time=Table1.Date
    Order By B.Name
      

  6.   

    最后结果可能要改成这样就好理解了ID Name Value Date Time
    ------------------------------
    1  aaa  1.017 20060506 162341
    2  bbb  2.014 20060404 091523
    3  ccc  1.025 20060504 104253
      

  7.   

    SELECT * FROM B a where id=(select top 1 id from B where a.Name=Name order by  DateTime desc)
      

  8.   

    这个应该不难啊,下面是ID自增长时的情况,如果ID不为唯一,那就把MAX(ID)换成DATE+TIME了select name,value form table where id in(select max(id) from talbe group by name)
      

  9.   

    看来主要是我把ID写上的缘故,产生了误导,不好意思了再开新贴,重新阐述,请paoluo(一天到晚游泳的鱼)过来一探究竟。
      

  10.   

    新贴地址:
    http://community.csdn.net/Expert/topic/5415/5415174.xml?temp=.1697962
      

  11.   

    既然這種情況都有,那就借用臨時表吧。Select OrderID = Identity(Int, 1, 1) Into #T From B Order By Name, [Date], [Time]
    Select 
    A.ID,
    A.Name,
    B.Value,
    B.[Date],
    B.[Time]
    From
    A
    Inner Join
    #T B
    On 
    A.Name = B.Name
    Inner Join
    (Select Name, Max(OrderID) As OrderID From #T Group By Name) C
    On B.Name = C.Name And B.OrderID = C.OrderIDDrop Table #T