0

请帮我解决我的疑问,我在 oracle9i 中得到这样的输出,

S.No    Column1      Column2  
----    ----------   -------
 1      10/11/2011   Basic   
 2      10/11/2011   Basic       
 3      12/05/2012   Basic       
 4      12/05/2012   Basic       
 5      13/05/2012   Basic        

但我的真实情况是,我需要在下面的结构中填充输出

S.No    Column1      Column2  
----    ----------   -------
 1      10/11/2011   Basic   
        10/11/2011   Basic       
 2      12/05/2012   Basic       
        12/05/2012   Basic       
 3      13/05/2012   Basic   

我不知道如何形成查询,检索结构,请帮帮我,请任何人为我提供解决方案..提前谢谢

4

1 回答 1

0

这是一种方法。

SELECT CASE
          WHEN r = 1
             THEN w
          ELSE NULL
       END as s_no, column1, column2
  FROM (SELECT column1, column2,
               ROW_NUMBER () OVER (PARTITION BY column1 ORDER BY column2) AS r,
               DENSE_RANK () OVER (ORDER BY column1) AS d
          FROM SAMPLE);

这里ROW_NUMBER函数返回一组 column1 中每一行的唯一编号。 DENSE_RANK函数将唯一的排名返回到每组 column1。使用它,您可以选择仅显示第一行的 dense_rank 列。

SQL小提琴在这里

于 2013-06-20T06:04:07.397 回答