2017-03-09 1 views
0

큰 Excel 파일에서 계산할 때 SAP Business Objects 쿼리에서 계산할 때 SAP Business Objects 쿼리에서 변수를 계산해야하는 문제가 발생합니다.SAP BO - 각 행에서 주당 1/0 고유 값을 얻는 방법

매일/주간 데이터가있는 열이 많습니다. 나는 한 주 안에 이름/사람/특정 신분증의 첫 번째 인스턴스에 대해 "1"을 얻고 나머지 모든 것에 대해서는 "0"을 얻고 싶습니다.

예를 들어 "Glass"항목이이 변수/열에서 4 번째 주에 5 회 판매 된 경우 첫 번째 판매가 "1"이되고 다음 4 개의 판매가 "0"이됩니다. 이렇게하면 특정 주에 판매되는 별개 품목 수가 늘어납니다.

Business Objects에는 Count와 Count 고유 한 기능이 있지만 전체 대시 보드의 소스로 사용하기 때문에 데이터의 전체 원시 테이블에 대해 1/0 시스템을 선호합니다. 별개의 부분/슬라이서에 대한 측정 항목입니다.

내가 이전에했던 방식은 다음과 같습니다. = IF (SUMPRODUCT ($ A $ 2 : $ A5000 = $ A2) * ($ G $ 2 : $ G5000 = $ G2))> 1,0,1)

이것은 속임수를 사용하고 열 A (열 A는 주)의 특정 값 범위에 나타나는 열 G의 값의 첫 번째 인스턴스에 대해 "1"을 제공하고 동일한 값이 다시 나타날 때 "0"을 제공합니다 A 열의 같은 주 값. 주 값이 변경되면 "1"이 다시 표시됩니다.

데이터가 커질수록 데이터의 전체 열에 대해 각 행의 2 셀을 비교하므로 충돌이 발생하는 경향이 있습니다.

저는 지금까지 Business Objects에서 이것을 모방 할 수 없었습니다. 저는 제 능력과 인터넷 검색 능력을 다 써 버렸다고 생각합니다.

누구나이 두 센트를 공유 할 수 있습니까?

select t.*, 
     (case when 1 = row_number() over (partition by name, person, week, identifier 
             order by ?? 
             ) 
      then 1 else 0 
     end) as new_indicator 
from t; 

참고 ??을 :

+0

질문을 편집하고 샘플 데이터를 제공하십시오 원하는 결과. –

답변

1

쿼리에 행을 고유하게 식별하는 개체가 있다고 가정하면 몇 가지 간단한 단계로이 작업을 수행 할 수 있습니다.

은의이 쿼리는 다음과 같은 객체를 포함 가정 해 봅시다 :

Sale ID 
Name 
Person 
Sale Date 
Week # 
Price 
etc. 

당신은 각 이름/주 번호의 첫 번째 항목에 대한 1을 표시합니다.

1 단계 : 다음 정의로 변수를 만듭니다.의이 [FirstOne]

을 부르 자 =Min([Sale ID]) In ([Name];[Week #])

2 단계 :이 나타내는 행의 1을 생산한다

=If [FirstOne] = [Sale ID] Then 1 Else 0 


: 다음과 같은 공식으로 열을 추가 보고서 블록에서 주 내의 Name #의 최초의 출현. 그런 다음 이름/사람/주 번호의 1 일 개 첫 번째 항목을 보여주고 싶었다 경우, 당신은 그에 따라 [FirstOne] 변수를 수정할 수 :

=Min([Sale ID]) In ([Name];[Person];[Week #])

+0

조. 이거 효과가있어. 정말 고맙습니다. 어떤 종류의 괴롭힘 - 제 수식이 BO 솔루션보다 훨씬 덜 별개입니다. 나는 그것을 검사했고 그것은 당신의 것이 정확하고 공식이 아닌 것 같다. 위대한 깨끗하고 멋진 해결책을 가져 주셔서 감사합니다. Gordon에게 큰 감사를 표하고 좋은 해결책을 제시합니다. – drLecter

1

난 당신이 row_number() 주위에 논리를 원하는 생각합니다. SQL 테이블은 을 나타내며 집합 번호는입니다. 열이 순서를 지정하지 않는 한 테이블 또는 행 그룹에 "첫 번째"행이 없습니다. ??은 그러한 열 (아마도 날짜/시간 열, 아마도 id)에 대한 것입니다.

하나의 행만 표시하려면 order by (select null) 또는 order by week과 같이 아무 것도 넣을 수 있습니다.

+0

고든 고든! – drLecter

관련 문제