>

하나로 결합하려는 두 개의 SQL이 있습니다 (추가 속성 열을 얻기 위해 둘 다 참여하십시오).

1. 마스터 데이터 :이 부분은 회사의 세부 정보를 보여줍니다.

SELECT 
  dim.firm_sys_no "firm_sys_no",
  firm_global_id "Firm Global ID"

FROM
  FIRM_DETAILS_DIM LEFT OUTER JOIN ACTIVITIES_FACT ON
  ( FIRM_DETAILS_DIM.FIRM_SYS_NO=AACTIVITIES_FACT.FIRM_SYS_NO  )
  LEFT OUTER JOIN REPORTING_SALES_ORG_DIM ON
  (REPORTING_SALES_ORG_DIM.ORG_SYS_NO=ACTIVITIES_FACT.SALES_ORG_SYS_NO  )
  INNER JOIN 
  (select * from REPORTING_SALES_ORG_DIM where EFFECTIVE_END_DATE is null) SALES_ORG_LATEST ON
  (REPORTING_SALES_ORG_DIM.SALES_OFFICE_ID=SALES_ORG_LATEST.SALES_OFFICE_ID )

WHERE
(ACTIVITIES_FACT.EFFECTIVE_END_DATE is null )
  AND  ( FIRM_DETAILS_DIM.FIRM_GLOBAL_ID  <>  '-1')
  AND  ( SALES_ORG_LATEST.GLOBAL_REGION_NAME  IS NOT Null )
  AND  ( SALES_ORG_LATEST.global_region_name IS NOT NULL )
GROUP BY 
  firm_details_dim.firm_sys_no,
  firm_details_dim.firm_global_id
ORDER BY 
  firm_details_dim.firm_global_id,
  firm_details_dim.firm_sys_no

2. 조회/하위 선택 : 회사 전체 ID 당 거래 횟수에 대한 정보를 반환합니다.

SELECT 
  firm_details_dim.firm_global_id,
  (CASE
    WHEN round(months_between(current_date, SLS_MONTHLY_TRANS_F.transaction_date),0)>4
    THEN 0 
    ELSE 1 
  END) "Trs"
FROM SLS_MONTHLY_TRANS_F
  INNER JOIN firm_details_dim ON
  ( firm_details_dim.firm_sys_no=SLS_MONTHLY_TRANS_F.firm_sys_no )
WHERE SLS_MONTHLY_TRANS_F.transaction_amount_usd<>0
GROUP BY
  firm_details_dim.firm_global_id,
  (CASE
    WHEN round(months_between(current_date, SLS_MONTHLY_TRANS_F.transaction_date),0)>4
    THEN 0 
    ELSE 1 
  END)

SQL 얻을 필요가 있습니다 : 위의 두 쿼리를 결합하여 마스터 SQL이 두 번째 쿼리 (Trs4m)의 추가 열을 갖도록하십시오. 내가 목표로하는 것은 마스터에서 어떤 회사가 거래 횟수가 0 또는 1인지 확인하는 것입니다.


  • 답변 # 1

    흠, 명백한 옵션은 결과를 생성하기 위해 두 번째 쿼리에서 첫 번째 쿼리까지 추가 테이블을JOIN하는 것입니다.

    어떤 이유로 든 수행 할 수없는 경우함수를 생성하고 (두 번째 쿼리를 기반으로) 첫 번째 기능을 호출하여 필요한 매개 변수를 전달할 수 있습니다. 아마도 첫 번째 옵션보다 (훨씬?) 느릴 것입니다 (힌트 : SQL-PL/SQL 컨텍스트 전환). 두 부분 중 하나를 선택 부분으로 가져 왔습니다. 그렇기 때문에 하위 쿼리를 선택하는 동안 하나의 속성으로 제한 할 필요가 없었습니다.

  • 이전 python - utf-8 문자열로 msgpack_numpy 디코딩
  • 다음 python - 키즈가 라즈베리 파이 3에서 실행되는 창을 표시하지 않음