Din anden forespørgsel er så meget bedre at skrive som:
select bzq_terminate_provider as PROVIDER, sum(callsnum) as CALLS,
sum(charge_amount) as CHARGE, sum(at_call_dur_sec) as DUR
from usage_cycle_sum
where ban = '80072922' and ben = '1' and
subscriber_no = '036585305' and
start_cycle_code ='20150207' and
feature_code_rank in ('1', '2')
group by bzq_terminate_provider ;
Eller måske select
skal være:
select bzq_terminate_provider as PROVIDER,
sum(case when feature = '1' then callsnum else 0 end) as CALLS,
sum(charge_amount) as CHARGE,
sum(case when feature = '1' then at_call_dur_sec else 0 end) as DUR
(Den første version antog, at felterne blev nulstillet i den anden underforespørgsel, fordi de er NULL
i dataene, men det er måske ikke sandt.)
Imidlertid er applikationssoftware endnu ikke smart nok til at identificere sådanne akavet skrevne forespørgsler, så det er ikke det egentlige problem, du står over for. Hvis forespørgslen fungerer i databasen, men ikke i applikationen, er typiske problemer:
- Applikationen er ikke forbundet til den rigtige database.
- Applikationen har ikke tilladelser til databasen eller tabellen.
- Applikationsforespørgslen er forskellig fra den forespørgsel, der køres i databasen, typisk på grund af et substitutionsproblem.
- Resultaterne fra at køre forespørgslen i applikationen fortolkes ikke korrekt.