当前位置: 代码迷 >> Sql Server >> MSSQL查询偏题
  详细解决方案

MSSQL查询偏题

热度:92   发布时间:2016-04-25 01:21:03.0
MSSQL查询难题
有一批号码(号码可以重复),每个号码有一个时间。想建个视图什么的,生成多一列出来,新的这列保存次数(即如果一个号码,有多少个和它相同的号码,并且时间比它早,即它的次数为相同的号码数量加1),如下图所示。


------解决方案--------------------
SQL code
SELECT 号码,时间,次数=(ROW_NUMBER()OVER(PARTITION BY 号码,ORDER BY 时间))-1  FROM TABLEA ),A2 AS(SELECT 号码,MIN(时间) FROM TABLEA GROUP BY 号码
------解决方案--------------------
SQL code
DECLARE @t table(  number varchar(10),  cdate datetime)INSERT INTO @t  SELECT '123', '2012/2/13 16:23:12'  UNION  SELECT '234', '2012/2/25 16:23:12'  UNION  SELECT '123', '2012/5/13 16:23:12'  UNION  SELECT '235', '2011/2/13 16:23:12'  UNION  SELECT '321', '2012/1/15 16:23:12'  UNION  SELECT '234', '2012/2/17 16:23:12'  UNION  SELECT '123', '2012/2/13 20:11:01'  UNION  SELECT '321', '2012/1/10 16:23:12'  SELECT t1.number,t1.cdate, COUNT(t2.number)+1FROM @t t1LEFT JOIN @t t2 ON t1.number=t2.number AND t1.cdate>t2.cdateGROUP BY t1.number, t1.cdate, t2.number
  相关解决方案