2016-09-09 2 views
2

보기에서 반환되는 결과 집합과 해당 항목의 출처와 국가를 반환하는 예제가 있습니다 다음과 같습니다Oracle SQL - 결과 집합의 각 행에 열의 값에 따라 고유 한 식별자를 부여합니다.

ID | Description | Country_Name 
------------------------------------ 
1 | Item 1  | United Kingdom 
2 | Item 2  | France 
3 | Item 3  | United Kingdom 
4 | Item 4  | France 
5 | Item 5  | France 
6 | Item 6  | Germany 

나는 (내가 간결성을 위하여이를 생략 한 ID, DescriptionCountry_Name보다 더 많은 열이 있습니다) 추가 한 모든 열을 반환,이 데이터를 조회하고 싶었 고유을주는 추가 필드 안에있는 값에 따라 값이 달라집니다. Country_name

ID | Description | Country_Name | Country_Relation 
--------------------------------------------------------- 
1 | Item 1  | United Kingdom |  1 
2 | Item 2  | France   |  2 
3 | Item 3  | United Kingdom |  1 
4 | Item 4  | France   |  2 
5 | Item 5  | France   |  2 
6 | Item 6  | Germany  |  3 

우리가 재스퍼 보고서를 사용하고 있고 그 옆에 별표 (이 경우 숫자)가있는 항목을 표시해야하는 이유는 국가에 대한 세부 정보를 설명하기 때문입니다. 따라서 보고서는 다음과 같이 보일 것이다 :

Desc.   Country 
Item 1  United Kingdom(1) 
Item 2  France(2)  
Item 3  United Kingdom(1) 
Item 4  France(2)  
Item 5  France(2)  
Item 6  Germany(3)  

과를 다음 보고서는 필드가 없다는 것이 더 아래로 :

1: Here are some details about the UK 
2: Here are some details about France 
3: Here are some details about Germany 

나는 측면 각을 따라 가기 위해 고유 번호를 생성하기 위해 노력하고 어려움을 겪고있어 국가는 보고서가 실행될 때마다 하나씩 시작하여 새 국가가 발견되면이를 증분하고 할당 할 위치를 추적합니다. 나는 그런 일을하기 위해 임시 테이블을 사용할 때 추측 할 위험이있다.하지만 과도하다고 느낀다.

질문

  1. 오라클 SQL에서 가능한 이런 일이 아니면 차라리 크고 복잡 뭔가를 시도하고있다?
  2. Jasper 보고서에서 더 나은 방법이 있습니까? 순간

, 나는 단지 각 개별 항목 아래에 숨은 의미를 갖는 동일한 정보를 여러 번 반복 찾고 있어요, 단지 오히려 그들을 집계 가진 한번 서브 텍스트를하는 것보다, 이러한 상황을 방지 할 수 있습니다. 그것은 깨끗하지는 않지만이 다소 이상한 번거 로움을 덜어줍니다.

답변

4

당신은 dense_rank()를 찾고 있습니다 :

select t.*, dense_rank() over (order by country_name) as country_relation 
from t; 

을 재스퍼 보고서 내에서이 작업을 수행 할 수 있는지 모르겠어요. 그러나 오라클에서이를 처리하기위한 뷰를 설정하는 것은 쉽습니다.

관련 문제