Truy vấn thứ hai của bạn hay hơn rất nhiều khi viết là:
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 ;
Hoặc, có thể là select
cần phải:
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
(Phiên bản đầu tiên giả định rằng các trường bị xóa trong truy vấn con thứ hai vì chúng là NULL
trong dữ liệu, nhưng điều đó có thể không đúng.)
Tuy nhiên, phần mềm ứng dụng vẫn chưa đủ thông minh để xác định các truy vấn được viết một cách vụng về như vậy, vì vậy đó không phải là vấn đề thực tế mà bạn đang gặp phải. Nếu truy vấn hoạt động trong cơ sở dữ liệu, nhưng không hoạt động trong ứng dụng, thì các vấn đề điển hình là:
- Ứng dụng không được kết nối với cơ sở dữ liệu phù hợp.
- Ứng dụng không có quyền đối với cơ sở dữ liệu hoặc bảng.
- Truy vấn ứng dụng khác với truy vấn chạy trong cơ sở dữ liệu, thường là do một số vấn đề thay thế.
- Kết quả từ việc chạy truy vấn trong ứng dụng không được diễn giải chính xác.