2014-10-17 61 views
-1
item_no parent item_no_child item_name text 
123    3    xxx  the item is resistant to water 
123    5    yyy  The item is resistant to heat 
123    6    zzz  The item is .... 

我将父母item_no作为输入并检索子项目号。现在我必须检查每个子项目的文本,如果他们有相同的文本,我不应该显示item_name否则我应该。抑制后续行的重复值

+0

查看LAG功能 – Randy 2014-10-17 12:48:55

回答

0

row_number()解析函数是实施这样不同的查询的一个简洁的方式:

SELECT item_name 
FROM (SELECT item_name, 
       ROW_NUMBER() OVER (PARTITION BY text ORDER BY 1) AS rn 
     FROM items 
     WHERE item_no parent = 123) 
WHERE rn = 1 

编辑:
一些说明中,作为请求的评价 - row_number是一个解析函数(有时也被称为窗口功能)。它每行输入返回一个结果(如行函数),但也会考虑所有其他行(如聚合函数)。在这种情况下,row_number只是返回当前行的数量(即简单的计数器)。这个计数是根据不同的值textpartition by子句)完成的。 row_number需要一个order by子句,因此它知道按照哪个次序对这些行进行计数。由于这里我们不关心哪一行(每个不同的值为text)首先出现,我只需按照常数1来订购。

+0

请问您能解释一下究竟是什么吗?我的意思是row_number,分区是干什么的。 – 2014-10-17 12:52:14

+0

@susmithavangala看到我更新的答案。 – Mureinik 2014-10-17 14:12:39