一个发布表,基本字段如下:
PubGuid  SiteID  Period  *  *
****       4     200701
****       4     200702
****       4     200703
****       6     200605
****       6     200606
****       12    200702
****       12    200703
****       12    200704
想写一个语句,取得每个SiteID下Period最大的那个PubGuid。

解决方案 »

  1.   

    select max(PubGuid),  SiteID from table group by SiteID
      

  2.   

    对不起,描述错了,应该是给定一个Period如200703,从这个表中找出<=这个Period,并且是每个SiteID中最大的那个Period的PubGuid。
      

  3.   

    PubGuid是36位的字符型Guid,用max是不对的。
      

  4.   

    Select a.PubGuid from Table a,(Select SiteID,max(Period) from Table group by SiteID) b where a.SiteID=b.SiteID and a.Period=b.Period
      

  5.   

    SELECT A.PubGuid ,B.SiteID,B.Period FROM T A
    LEFT JOIN
    (
    SELECT SiteID,MAX(Period) FROM T
    )B ON A.SiteID=B.SiteID AND A.Period=B.Period
      

  6.   

    Select a.PubGuid from Table a,(Select SiteID,max(Period) from Table where Period<=200703 group by SiteID) b where a.SiteID=b.SiteID and a.Period=b.Period
      

  7.   

    Select a.PubGuid from Table a,(Select SiteID,max(Period) as Period from Table where Period<=200703 group by SiteID) b where a.SiteID=b.SiteID and a.Period=b.Period