row_number()分组?

use*_*928 41 t-sql sql-server unique row-number

我有一个包含列的数据集Date,CatQTY.我想要做的是添加一个唯一的列,它只Cat在行计数时计算唯一值.这就是我希望我的结果集看起来像:

在此输入图像描述

通过使用下面的SQL查询,我可以使用该row_number()函数获取行.

但是,我无法获得上面描述的那个独特的专栏.当我将group by添加到OVER子句时,它不起作用.有没有人有任何想法,我怎么能让这个独特的计数专栏工作?

SELECT 
   Date,    
   ROW_NUMBER() OVER (PARTITION BY Date ORDER By Date, Cat) as ROW,
   Cat,
   Qty
FROM SOURCE
Run Code Online (Sandbox Code Playgroud)

G.S*_*G.S 41

这是替代解决方案.

您无需担心Cat的订购.使用以下SQL,您将能够获得Date&Cat组合的唯一值.

SELECT 
   Date,    
   ROW_NUMBER() OVER (PARTITION BY Date, Cat ORDER By Date, Cat) as ROW,
   Cat,
   Qty
FROM SOURCE
Run Code Online (Sandbox Code Playgroud)


Nah*_*eul 16

DENSE_RANK() OVER (PARTITION BY date ORDER BY cat)
Run Code Online (Sandbox Code Playgroud)

  • @ user1582928根据http://msdn.microsoft.com/en-us/library/ms173825.aspx"<order_by_clause>确定DENSE_RANK函数应用于分区中行的顺序".并且您始终可以在SELECT结束时添加ORDER BY. (2认同)