提问人:user1582928 提问时间:9/21/2012 最后编辑:marc_suser1582928 更新时间:10/23/2021 访问量:113933
row_number() 分组依据?
row_number() Group by?
问:
我有一个包含列 、 和 的数据集。我想做的是添加一个唯一列,该列仅在进行行计数时才计算唯一值。这就是我希望我的结果集看起来像的样子:Date
Cat
QTY
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
答:
22赞
Nahuel Fouilleul
9/21/2012
#1
DENSE_RANK() OVER (PARTITION BY date ORDER BY cat)
评论
0赞
user1582928
9/21/2012
谢谢,这是朝着正确方向迈出的一步。然而,事实是,我的实际数据集不是按猫排序的。你知道它在那个例子中是如何工作的吗?(想象一下,在我的猫专栏中,DEF 排在 ABC 之前。但是,在我的排序中,DEF 值确实是连续的,因此您不会在 cat 列中看到 DEF、DEF、ABC、ABC、DEF 作为值)
2赞
prashanth
9/21/2012
@user1582928 根据 msdn.microsoft.com/en-us/library/ms173825.aspx“<order_by_clause>确定将DENSE_RANK函数应用于分区中行的顺序”。您可以随时在 SELECT 的末尾添加 ORDER BY。
0赞
Nahuel Fouilleul
9/21/2012
@user1582928,如果需要,可以指定一个函数来更改顺序,例如:order by decode('DEF',1,'ABC',2,3)
53赞
G.S
9/21/2012
#2
这是一个解决方案。
您不必担心 Cat 的订购。使用以下 SQL,您将能够获得 Date & Cat 组合的唯一值。
SELECT
Date,
ROW_NUMBER() OVER (PARTITION BY Date, Cat ORDER By Date, Cat) as ROW,
Cat,
Qty
FROM SOURCE
评论