您好我有一些SQL ...

SELECT  
    AdviceNo,
    Registration
FROM tblSalesDetail

这产生类似...

ADV00001, ABC123
ADV00001, CDE564
ADV00002, FGE432
ADV00003, HUY789
ADV00003, MJS532
ADV00003, JFY428

谁能告诉我,我怎么会调整它,看看下面的吗?

ADV00001, ABC123, 1
ADV00001, CDE564, 2
ADV00002, FGE432, 1
ADV00003, HUY789, 1
ADV00003, MJS532, 2
ADV00003, JFY428, 3
有帮助吗?

解决方案

如何是关于甲骨文的分析功能?

这是一个典型的例子,其中RANK是有益的; - )

SELECT AdviceNo,
       Registration,
       RANK () OVER (PARTITION BY AdviceNo ORDER BY Registration ASC) MY_RANK
  FROM tblSalesDetail;

其他提示

可以使用row_number()partition byover子句重置基于组的计数;语法是一样的东西(注意,未测试):

SELECT  
    AdviceNo,
    Registration,
    row_number() over
    (partition by AdviceNo
     order by Registration)     as Ordinal
FROM tblSalesDetail

partition by有点像group by但它不会卷起数据 - 无论你是在分区中的计算,它只是重置。在这种情况下,我们计算行数 使用一个内置的功能,并且组内按注册排序它。

使用OVER对T此链接到MSDN文档讨论 - SQL。它基本上是在支持它的其他平台一样的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top