2016-09-26 12 views
0

내가 sap hana에 대해 작성한 쿼리에 문제가 있습니다.sap hana sql 날짜 집계

기본적으로 두 개의 표가 있습니다.

첫 번째 테이블은 달력의 각 날짜에 대한 날짜를 포함하는 날짜 테이블입니다. 두 번째 테이블은 고객 참조 번호와 각 고객 참조 번호에 대한 시작일 및 종료일을 포함하는 결과 테이블입니다. 이 고객 레퍼런스 표에는 약 4 백만 개의 레코드가 있습니다. 본질적으로 쿼리의 내부 부분에서 나는 01012011 이후 매일 4 백만 레코드를 얻게 될 것입니다. 결과를 집계하는 간단한 방법이 있어야합니다. 나는 하나의 성능 문제가있는 것처럼 보이지만 내부 선택 쿼리를 시도했다.

나는 이와 같은 코드를 작성했지만 이것이 최적이 아닙니다.

select date_sql, count(*) as count 
      from (
       select date_sql 
        from tbl_ref_cal_link tbl_date      
         where date_sql between '2011-01-01' and add_days (to_date(current_date, 'YYYY-MM-DD'), -1)      
    )tbl_date 
      Left join #cust_ref_table M1 
       On tbl_date.date_sql between m1.startdate and m2.enddate)z 

누구에게 도움이나 제안을 주시면 감사하겠습니다.

답변

0

현재 하여 그룹을 사용할 수 있습니다 그리고 당신은 절 SQLScript 코드를

select 
    date_sql, count(m1.CustomerId) as count 
from (
-- dates table here 
) tbl_date 
Left join cust_ref_table m1 On tbl_date.date_sql between m1.startdate and m1.enddate 
group by date_sql 
을 다음과 같이 M1하는 WHERE에서 m2을 변경해야
관련 문제