【问题标题】:Sub-select as a column with join (attaching extra attribute to the statement)子选择作为带有连接的列(将额外属性附加到语句)
【发布时间】:2018-01-25 18:34:01
【问题描述】:

我有两个 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.Lookup/sub-select:返回每个公司全局 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) 的附加列。我的目标是查看 master 中的哪家公司的交易计数为 0 或 1。

【问题讨论】:

标签: sql oracle join


【解决方案1】:

嗯,显而易见的选择是(外部?)JOIN 附加表(来自第二个查询)到第一个查询以产生结果。

如果由于某种原因无法完成,您可以创建一个函数(基于第二个查询)并从第一个查询中调用它,并传递所需的参数。这可能会(很多?)比第一个选项慢(提示:SQL - PL/SQL 上下文切换)。

【讨论】:

  • 不幸的是,我的系统上没有运行脚本的 PL SQL 权限。您提出的加入选项也有效。
  • 好的;如果有帮助,我很高兴。
【解决方案2】:

好的,我将子查询移至 from 子句部分,与其他表连接,并将两列之一带到选择部分。这就是为什么我不必在选择时将子查询限制为一个属性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-03
    • 1970-01-01
    • 2019-12-28
    • 1970-01-01
    相关资源
    最近更新 更多