0

我想用它DENSE_RANK()来划分周数,并按 id 排序,它工作正常。

但是我有一些情况,我有一个持续时间为两周数的 id,由于 order by,它给了他另一个 id 而不是第一个 id。

这是结果:

CardID      WeekN       RowNum

2467        1           1   
**2481      1           *2***   
2468        2           1   
2473        2           2   
2482        2           3   
**2481      2           *4***   
2473        3           1   
2482        3           2   
2481        3           3

我对 RowNum 的查询是:

 DENSE_RANK() OVER (PARTITION BY Lng_CardWWeek  ORDER BY Duration , CardID  Desc) as RowNum

我应该如何解决它?

4

1 回答 1

0

尝试这样的事情:

SELECT DENSE_RANK() 
OVER (PARTITION BY Lng_CardWWeek  ORDER BY Duration , CardID  Desc) AS RowNum
FROM <<tablename>> AS <<name>> 
[WHERE <<condtion>>]
GROUP BY CardID
ORDER BY RowNum

您必须使用 SELECT 来指定您正在尝试从表中获取一些数据。此外,您必须包括表的名称。

如果你只是在后面的行中列出那些具有相同 CardID 的元素,那么也可以在 OVER 子句之外使用 ORDER BY 子句。

尝试使用外部 GROUP BY 以使每个 CardID 仅获取一行。

于 2012-11-25T08:47:40.213 回答