2番目のクエリは、次のように記述した方がはるかに優れています。
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
であるため、2番目のサブクエリでフィールドがゼロになっていると想定していました。 データに含まれていますが、そうではない可能性があります。)
しかし、アプリケーションソフトウェアは、そのような厄介に書かれたクエリを識別するのに十分なほど賢くないので、それはあなたが直面している実際の問題ではありません。クエリがデータベースで機能するが、アプリケーションでは機能しない場合、一般的な問題は次のとおりです。
- アプリケーションが適切なデータベースに接続されていません。
- アプリケーションにはデータベースまたはテーブルに対する権限がありません。
- アプリケーションクエリは、データベースで実行されるクエリとは異なります。これは通常、置換の問題が原因です。
- アプリケーションでクエリを実行した結果が正しく解釈されていません。