Втората ви заявка е много по-хубава да бъде написана като:
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 ;
Или може би select
трябва да бъде:
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
(Първата версия предполагаше, че полетата са нулирани във втората подзаявка, защото са NULL
в данните, но това може да не е вярно.)
Приложният софтуер обаче все още не е достатъчно интелигентен, за да идентифицира такива неудобно написани заявки, така че това не е действителният проблем, с който се сблъсквате. Ако заявката работи в базата данни, но не и в приложението, тогава типичните проблеми са:
- Приложението не е свързано с правилната база данни.
- Приложението няма разрешения за базата данни или таблицата.
- Заявката на приложението е различна от заявката, изпълнявана в базата данни, обикновено поради някакъв проблем със заместване.
- Резултатите от изпълнението на заявката в приложението не се интерпретират правилно.