2014-10-17 4 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_name을 표시하지 않아야합니다.후속 행에서 반복되는 값을 표시하지 않음

+0

LAG 기능을 참조하십시오. – Randy

답변

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은 단순히 현재 행 (즉 간단한 카운터)의 수를 반환합니다. 이 계산은 다른 값인 text (partition by 절)마다 수행됩니다. row_numberorder by 절이 필요하므로이 행을 계산하는 순서를 알고 있습니다. 여기에서 우리는 어떤 행 (다른 값인 text)이 먼저 오는 지 신경 쓰지 않고 단순히 상수 1으로 주문합니다.

+0

정확하게 설명해 주시겠습니까 ?? 나는 그 row_number가하는 일을 의미한다. –

+0

@susmithavangala 내 업데이트 된 답변을 참조하십시오. – Mureinik

관련 문제