如何在Oracle 9i中对特定列进行分组

时间:2013-06-20 02:22:54

标签: oracle oracle9i

请帮我解决我的疑问,我在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   

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

1 个答案:

答案 0 :(得分: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组返回唯一的排名。 使用此选项,您可以选择仅显示第1行的dense_rank列。

SQL小提琴here