直接的语句是写不了的。需要先建立临时表SELECT  Sell_no  AS Sell_no,
        convert(char(4),year(sell_Date))+'-'+convert(char(2),Month(sell_Date)  AS yearmonth,
        0    AS day,
        0    AS money
  INTO  #Temp
  FROM  table1
 GROUP  convert(char(4),year(sell_Date))+'-'+convert(char(2),Month(sell_Date)  , sell_no  UPDATE  #Temp
    SET  DAY   = Day(Max(sell_date)) 
   FROM  table1
  WHERE  yearMonth =  convert(char(4),year(sell_Date))+'-'+convert(char(2),Month(sell_Date)  
   
 UPDATE  #Temp
    SET  Money = Money
   FROM  table1 
 WHERE   yearMonth =  convert(char(4),year(sell_Date))+'-'+convert(char(2),Month(sell_Date)  
   AND   day     = day(sell_Date)select * from #Temp
    

解决方案 »

  1.   

    select sell_no as 供應商,  
    year(sell_date) as 年,  
    month(sell_date) as 月,  
    day(sell_date) as 日,  
    sell_money as 金額
    from table_name 
    where 日 in 
    (select max(day(sell_date)) from table_name group by sell_no ,year(sell_date), month(sell_date)) 
      

  2.   

    分开写
    select sell_no,convert(char(7) ,sell_date,120) sell_month,max(datepart(day,sell_date)) sell_day into #tmp from a  group by sell_no,convert(char(7),sell_date,120)select a.sell_no,#tmp.sell_month,#tmp.sell_day,a.sell_money from #tmp,a where #tmp.sell_no = a.sell_no  and convert(char(7) ,sell_date,120) = #tmp.sell_month and #tmp.sell_day = datepart(day,a.sell_date)drop table #tmp
      

  3.   

    这个不难:
     你的sell_date如果为char型:
    SELECT *
    FROM table1 as a
    WHERE (NOT EXISTS
            (SELECT *  FROM table1 AS b
              WHERE b.sell_no = a.sell_no 
                AND b.sell_date > a.sell_date
                AND LEFT(b.sell_date, 7) = LEFT(a.sell_date, 7)
            )
           )
    如果sell_date为datetime型,用cast()转化为上述格式的char型即可
      

  4.   

    这个不难:
     你的sell_date如果为char型:
    SELECT *
    FROM table1 as a
    WHERE (NOT EXISTS
            (SELECT *  FROM table1 AS b
              WHERE b.sell_no = a.sell_no 
                AND b.sell_date > a.sell_date
                AND LEFT(b.sell_date, 7) = LEFT(a.sell_date, 7)
            )
           )
    如果sell_date为datetime型,用cast()转化为上述格式的char型即可
      

  5.   

    搞定:
    select sell_no,yr,max(cast(rr as int)),max(sell_money)
    from ( select sell_no,
           convert(char(7),sell_Date,121) as yr,
           convert(char(2),sell_date,103) as rr,
           sell_money
      from temp1 ) b
      group by b.sell_no ,b.yr