请帮我解决我的疑问,我在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
我不知道如何形成查询,检索结构,请帮帮我,请有人为我提供解决方案。谢谢提前
答案 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