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

求高手解答一个有关问题

2013-10-29 
求高手解答一个问题CREATE TABLE #temp(Customer_ID INT ,Handler INT ,Num INT ,Tran_Date DATETIME)INSE

求高手解答一个问题

CREATE TABLE #temp
    (
      Customer_ID INT ,
      Handler INT ,
      Num INT ,
      Tran_Date DATETIME
    )
    INSERT #temp
            ( Customer_ID ,
              Handler ,
              Num ,
              Tran_Date
            )
   SELECT 73840,35240009,1,'2006/1/17 21:03'union
SELECT 73840,31130002,1,'2006/4/9 13:22'union
SELECT 73840,35570018,1,'2006/5/7 18:46'union
SELECT  73840,38290005,3,'2011/7/21 17:27'union
SELECT 73840,37550028,4,'2012/8/18 17:36'union
SELECT 73840,99990814,4,'2013/8/7 20:08'

SELECT * FROM #temp
ORDER BY #temp.Customer_ID,#temp.Num,#temp.Tran_Date



如上面的代码所示,怎么找到Customer_ID的Handler值,Handler是取Num值最大,如果Num相同,则取Tran_Date最大值。Tran_Date是唯一的,没有相同。
[解决办法]

select Customer_ID,Handler from
(select Customer_ID,Handler,
        row_number() over(partition by Customer_ID order by Num desc,Tran_Date desc) 'rn' 
 from #temp) t
where t.rn=1

/*
Customer_ID Handler
----------- -----------
73840       99990814

(1 row(s) affected)
*/

热点排行