【问题标题】:Select or Join tatement for BIRT Report using SQL使用 SQL 选择或连接 BIRT 报告的语句
【发布时间】:2017-03-05 20:11:04
【问题描述】:

我刚刚开始编写 SQL 选择语句,但遇到了问题。我有一份完美运行的现有报告。但是,我被要求在结果集中添加一些字段。该文件位于具有外键关系的表中。我正在尝试将其添加到查询中,但我失败了。我可以单独编写 select 语句,它会返回正确的结果。我只是不知道如何将其添加到现有语句中。我尝试了左连接,将其添加到选择中,但结果集错误。我想添加以下内容以将信息返回给新列中的结果集,但如果为 null,则不阻止其他数据。

我想补充: 选择 sc.FACILITY_ID、ce.schd_id 来自 PA_SCHED sc、PA_CPNT_EVTHST ce 其中 sc.SCHD_ID = ce.schd_id

致以下:

select s.stud_id as studID, s.lname as lastName, s.fname as firstName, s.mi
as middleName,
   s.EMP_STAT_ID ,s.EMP_TYP_ID ,s.JL_ID ,s.JP_ID ,s.TARGET_JP_ID ,
   s.JOB_TITLE ,s.DMN_ID ,s.ORG_ID ,s.REGION_ID, s.CO_ID , DECODE
  (s.NOTACTIVE,'Y','N','N','Y') as active ,
   s.ADDR ,s.CITY ,s.STATE ,s.POSTAL ,s.CNTRY, s.SUPER , s.COACH_STUD_ID ,
   s.HIRE_DTE,s.TERM_DTE ,s.EMAIL_ADDR, s.RESUME_LOCN ,s.COMMENTS , 
   s.SHIPPING_NAME ,
   s.SHIPPING_CONTACT_NAME,  
   s.SHIPPING_ADDR ,s.SHIPPING_ADDR1 ,s.SHIPPING_CITY ,
   s.SHIPPING_STATE,
   s.SHIPPING_POSTAL ,s.SHIPPING_CNTRY ,s.SHIPPING_PHON_NUM,
   s.SHIPPING_FAX_NUM, 
   s.SHIPPING_EMAIL_ADDR ,s.STUD_PSWD ,s.PIN ,s.PIN_DATE,
   s.ENCRYPTED , s.HAS_ACCESS ,s.BILLING_NAME , s.BILLING_CONTACT_NAME ,
   s.BILLING_ADDR ,s.BILLING_ADDR1 ,s.BILLING_CITY ,s.BILLING_STATE ,
   s.BILLING_POSTAL,
   s.BILLING_CNTRY , 
   s.BILLING_PHON_NUM ,s.BILLING_FAX_NUM ,s.BILLING_EMAIL_ADDR ,
   s.SELF_REGISTRATION ,s.SELF_REGISTRATION_DATE, s.ACCESS_TO_ORG_FIN_ACT ,
   s.NOTIFY_DEV_PLAN_ITEM_ADD , s.NOTIFY_DEV_PLAN_ITEM_MOD ,
   s.NOTIFY_DEV_PLAN_ITEM_REMOVE ,
   s.NOTIFY_WHEN_SUB_ITEM_COMPLETE ,s.NOTIFY_WHEN_SUB_ITEM_FAILURE ,
   s.LOCKED ,s.PASSWORD_EXP_DATE,s.SECURITY_QUESTION ,
   s.SECURITY_ANSWER ,s.ROLE_ID ,s.IMAGE_ID ,s.GENDER ,s.PAST_SERVICE, 
   s.LST_UNLOCK_TSTMP,
   s.LST_UPD_USR, s.LST_UPD_TSTMP,s.MANAGE_SUB_SP, s.MANAGE_OWN_SP,

   e.cpnt_typ_id as cpntTypeID, e.cpnt_id as cpntID, e.rev_dte as revDate, 
   e.rev_num as revNum,
   e.schd_id as schedID, cp.cpnt_title as cpntDesc, e.grade,
   e.compl_dte as complDate, e.cmpl_stat_id as complStatID,
   cs.cmpl_stat_desc as complStatDesc, nvl(e.total_hrs, 0) as totalHrs,
   nvl(e.credit_hrs, 0) as creditHrs, nvl(e.contact_hrs, 0) as contactHrs,
   nvl(e.cpe_hrs, 0) as cpeHrs, nvl(oi.price, 0) as tuition,
   e.inst_name as instName, e.comments as eventComments, e.es_user_name as 
   esUserName,
   e.lst_upd_tstmp as lstTmsp,
   e.esig_meaning_code_id || '  ' ||  e.esig_meaning_code_desc as 
   esigMeaningCode,
   e.currency_code as currencyCode, cur.symbol as currencySymbol, 
   cur.description,
   cur.active, cur.is_default, cur.label_id
   ,s.jl_id
   ,s.job_title
   ,s.super
   ,s.hire_dte
   ,s.term_dte
   ,eeno.user_value
   ,co.user_value

来自 pa_student s、PA_CPNT_EVTHST e、PA_CMPL_STAT cs、 pa_fin_order_item oi, pa_currency cur, pa_cpnt cp,

   (SELECT s.stud_id, f.user_value
FROM PA_STUD_USER f, pa_student s
WHERE s.stud_id = f.stud_id (+)
AND f.col_num (+) = '10') eeno
,(SELECT s.stud_id, f.user_value
FROM PA_STUD_USER f, pa_student s
WHERE s.stud_id = f.stud_id (+)
AND f.col_num (+) = '40') co

where e.stud_id = s.stud_id
  and e.cmpl_stat_id = cs.cmpl_stat_id
  and e.currency_code = cur.currency_code(+)
  and e.order_item_id = oi.order_item_id(+)
  and cp.cpnt_typ_id(+) = e.cpnt_typ_id
  and cp.cpnt_id(+) = e.cpnt_id
  and cp.rev_dte(+) = e.rev_dte
  and s.stud_id = eeno.stud_id(+) 
  AND s.stud_id = co.stud_id(+)




 /**  and trunc(e.compl_dte) >= [FromDate] 
   and not trunc(e.compl_dte) > [ToDate]  
   and s.stud_id in [UserSearch]
   and e.cpnt_typ_id in [ItemTypeSearch]
   and [security:pa_student s] */

感谢您的帮助。

【问题讨论】:

    标签: sql select left-join reporting birt


    【解决方案1】:

    在 FROM ...中添加了这个

      (select sc.FACILITY_ID, ce.schd_id from PA_SCHED sc 
      where sc.SCHD_ID (+) = e.schd_id
      ) sc
    

    并在主SELECT 中附加sc.FACILITY_ID ...

    看看这是否有效......

    SELECT s.stud_id AS studID,
      s.lname        AS lastName,
      s.fname        AS firstName,
      s.mi           AS middleName,
      s.EMP_STAT_ID ,
      s.EMP_TYP_ID ,
      s.JL_ID ,
      s.JP_ID ,
      s.TARGET_JP_ID ,
      s.JOB_TITLE ,
      s.DMN_ID ,
      s.ORG_ID ,
      s.REGION_ID,
      s.CO_ID ,
      DECODE (s.NOTACTIVE,'Y','N','N','Y') AS active ,
      s.ADDR ,
      s.CITY ,
      s.STATE ,
      s.POSTAL ,
      s.CNTRY,
      s.SUPER ,
      s.COACH_STUD_ID ,
      s.HIRE_DTE,
      s.TERM_DTE ,
      s.EMAIL_ADDR,
      s.RESUME_LOCN ,
      s.COMMENTS ,
      s.SHIPPING_NAME ,
      s.SHIPPING_CONTACT_NAME,
      s.SHIPPING_ADDR ,
      s.SHIPPING_ADDR1 ,
      s.SHIPPING_CITY ,
      s.SHIPPING_STATE,
      s.SHIPPING_POSTAL ,
      s.SHIPPING_CNTRY ,
      s.SHIPPING_PHON_NUM,
      s.SHIPPING_FAX_NUM,
      s.SHIPPING_EMAIL_ADDR ,
      s.STUD_PSWD ,
      s.PIN ,
      s.PIN_DATE,
      s.ENCRYPTED ,
      s.HAS_ACCESS ,
      s.BILLING_NAME ,
      s.BILLING_CONTACT_NAME ,
      s.BILLING_ADDR ,
      s.BILLING_ADDR1 ,
      s.BILLING_CITY ,
      s.BILLING_STATE ,
      s.BILLING_POSTAL,
      s.BILLING_CNTRY ,
      s.BILLING_PHON_NUM ,
      s.BILLING_FAX_NUM ,
      s.BILLING_EMAIL_ADDR ,
      s.SELF_REGISTRATION ,
      s.SELF_REGISTRATION_DATE,
      s.ACCESS_TO_ORG_FIN_ACT ,
      s.NOTIFY_DEV_PLAN_ITEM_ADD ,
      s.NOTIFY_DEV_PLAN_ITEM_MOD ,
      s.NOTIFY_DEV_PLAN_ITEM_REMOVE ,
      s.NOTIFY_WHEN_SUB_ITEM_COMPLETE ,
      s.NOTIFY_WHEN_SUB_ITEM_FAILURE ,
      s.LOCKED ,
      s.PASSWORD_EXP_DATE,
      s.SECURITY_QUESTION ,
      s.SECURITY_ANSWER ,
      s.ROLE_ID ,
      s.IMAGE_ID ,
      s.GENDER ,
      s.PAST_SERVICE,
      s.LST_UNLOCK_TSTMP,
      s.LST_UPD_USR,
      s.LST_UPD_TSTMP,
      s.MANAGE_SUB_SP,
      s.MANAGE_OWN_SP,
      e.cpnt_typ_id AS cpntTypeID,
      e.cpnt_id     AS cpntID,
      e.rev_dte     AS revDate,
      e.rev_num     AS revNum,
      e.schd_id     AS schedID,
      cp.cpnt_title AS cpntDesc,
      e.grade,
      e.compl_dte           AS complDate,
      e.cmpl_stat_id        AS complStatID,
      cs.cmpl_stat_desc     AS complStatDesc,
      NVL(e.total_hrs, 0)   AS totalHrs,
      NVL(e.credit_hrs, 0)  AS creditHrs,
      NVL(e.contact_hrs, 0) AS contactHrs,
      NVL(e.cpe_hrs, 0)     AS cpeHrs,
      NVL(oi.price, 0)      AS tuition,
      e.inst_name           AS instName,
      e.comments            AS eventComments,
      e.es_user_name        AS esUserName,
      e.lst_upd_tstmp       AS lstTmsp,
      e.esig_meaning_code_id
      || '  '
      || e.esig_meaning_code_desc AS esigMeaningCode,
      e.currency_code             AS currencyCode,
      cur.symbol                  AS currencySymbol,
      cur.description,
      cur.active,
      cur.is_default,
      cur.label_id ,
      s.jl_id ,
      s.job_title ,
      s.super ,
      s.hire_dte ,
      s.term_dte ,
      eeno.user_value ,
      co.user_value,
      e.schd_id,
      sc.FACILITY_ID
    FROM pa_student s,
      PA_CPNT_EVTHST e,
      PA_CMPL_STAT cs,
      pa_fin_order_item oi,
      pa_currency cur,
      pa_cpnt cp,
      (SELECT s.stud_id,
        f.user_value
      FROM PA_STUD_USER f,
        pa_student s
      WHERE s.stud_id   = f.stud_id (+)
      AND f.col_num (+) = '10'
      ) eeno ,
      (SELECT s.stud_id,
        f.user_value
      FROM PA_STUD_USER f,
        pa_student s
      WHERE s.stud_id   = f.stud_id (+)
      AND f.col_num (+) = '40'
      ) co ,
      (select sc.FACILITY_ID, ce.schd_id from PA_SCHED sc 
      where sc.SCHD_ID (+) = e.schd_id
      ) sc
    WHERE e.stud_id       = s.stud_id
    AND e.cmpl_stat_id    = cs.cmpl_stat_id
    AND e.currency_code   = cur.currency_code(+)
    AND e.order_item_id   = oi.order_item_id(+)
    AND cp.cpnt_typ_id(+) = e.cpnt_typ_id
    AND cp.cpnt_id(+)     = e.cpnt_id
    AND cp.rev_dte(+)     = e.rev_dte
    AND s.stud_id         = eeno.stud_id(+)
    AND s.stud_id         = co.stud_id(+);
    

    【讨论】:

    • 谢谢!我会试一试的。
    猜你喜欢
    • 1970-01-01
    • 2020-04-18
    • 2010-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多