Em 29/10/2012 18:39, SoftTech escreveu:
> Greetings All,
>
> The SQL that follows pulls these results: (These results are missing 5
> records from the second select of the union)
> FEE_CODE    AMT_EARNED_AGENCY    SHOW_IN_PMT_DIST_PLAN    FEE_CATEGORY
> CCO2    76    1    0
> SVC    1.17    1    0
> SVC    30    1    0
>
> This is the SQL statement:
>                        SELECT FC.FEE_CODE,
>                               COALESCE(PCF.CASE_FEE_AMT_EARNED_AGENCY_1 +
> PCF.CASE_FEE_AMT_EARNED_AGENCY_2, 0) AS AMT_EARNED_AGENCY,
>                               FC.SHOW_IN_PMT_DIST_PLAN,
>                               FC.FEE_CATEGORY
>                          FROM PMT_CASE_FEE PCF
>                          JOIN PMT_CASE PC ON PC.ACCT_ID = PCF.ACCT_ID
>                           AND PC.CASE_ID = PCF.CASE_ID
>                           AND PC.PMT_ID = PCF.PMT_ID
>                           AND PC.PMT_NO = PCF.PMT_NO
>                          JOIN CASE_FEE_HISTORY CFH ON CFH.CASE_FEE_ID =
> PCF.CASE_FEE_ID
>                           AND CFH.PMT_ID = PCF.PMT_ID
>                          JOIN CASE_FEE CF ON CF.CASE_FEE_ID = PCF.CASE_FEE_ID
>                          JOIN FEE_CODE FC ON FC.FEE_ID = CF.FEE_ID
>                         WHERE PCF.PMT_ID = :iPmtID
>                           AND PCF.PMT_NO = :iPmtNo
>                           AND PCF.ACCT_ID = :iAcctID
>                           AND PCF.CASE_ID = :iCaseID
>
>                         UNION
>
>                        SELECT FC.FEE_CODE,
>                               COALESCE(PDF.DEBT_FEE_AMT_EARNED_AGENCY_1 +
> PDF.DEBT_FEE_AMT_EARNED_AGENCY_2, 0) AS AMT_EARNED_AGENCY,
>                               FC.SHOW_IN_PMT_DIST_PLAN,
>                               FC.FEE_CATEGORY
>                          FROM PMT_DEBT_FEE PDF
>                          JOIN PMT_DEBT PD ON PD.ACCT_ID = PDF.ACCT_ID
>                           AND PD.DEBT_NO = PDF.DEBT_NO
>                           AND PD.PMT_ID = PDF.PMT_ID
>                           AND PD.PMT_NO = PDF.PMT_NO
>                          JOIN DEBT_FEE_HISTORY DFH ON DFH.DEBT_FEE_ID =
> PDF.DEBT_FEE_ID
>                           AND DFH.PMT_ID = PDF.PMT_ID
>                          JOIN DEBT_FEE DF ON DF.DEBT_FEE_ID = PDF.DEBT_FEE_ID
>                          JOIN FEE_CODE FC ON FC.FEE_ID = DF.FEE_ID
>                          JOIN DEBT D ON D.ACCT_ID = PDF.ACCT_ID
>                           AND D.DEBT_NO = PDF.DEBT_NO
>                         WHERE PDF.PMT_ID = :iPmtID
>                           AND PDF.PMT_NO = :iPmtNo
>                           AND D.ACCT_ID = :iAcctID
>                           AND D.CASE_ID = :iCaseID
>
> If I execute just the first select in the union it pulls these results
> FEE_CODE    AMT_EARNED_AGENCY    SHOW_IN_PMT_DIST_PLAN    FEE_CATEGORY
> CCO2    76    1    0
>
> If I execute the second select in the union it pulls these results
> FEE_CODE    AMT_EARNED_AGENCY    SHOW_IN_PMT_DIST_PLAN    FEE_CATEGORY
> SVC    30    1    0
> SVC    30    1    0
> SVC    30    1    0
> SVC    30    1    0
> SVC    30    1    0
> SVC    1.17    1    0
> SVC    30    1    0
>
> Again, executing the select statements separately results in the correct
> records being returned, executing both selects with the union omits 5
> records.
>
> Using Firebird 1.5.3
>
> Any ideas?
>
> Thanks,
> Mike
>

Use UNION ALL to avoid removing duplicates

Reply via email to