Hi,

I am new in oracle(SQL), could anyone help me in writing a
correct SQL.

Below is the table structure.

Table: Subsc
Fields:
1. Sub_no (this field will hold values of subscriber nos,
for e.g. S111111, S222222, S333333, S444444, etc.)
2. s_status (this field will hold values for different
status of subscriber, for e.g. 'A', 'S', 'C', etc.)
3. cus_id (this field will hold values of bill nos for e.g.
11111111, 22222222, 33333333, 44444444, etc.)


Table: Bill
Fields:
1. Bill_no this field will hold values of bill nos for e.g.
11111111, 22222222, 33333333, 44444444, etc.)
2. b_status = (this field will hold values for different
status of bill for e.g. 'O', 'C', 'S', etc.)


Note:
1. The Sub_no is a Primary key of Subsc table.
2. The cus_id is a foreign in Subsc table (referred from
Bill_no field of Bill table)
3. The Bill_no field is the Primary key of Bill table.


Query A --> I wrote a query to select cus_id/Bill_no which
is in status open (b_status = 'O') and having more than two
active subscriber (i.e. S_status = 'A') in it ( i.e. more
the two subscribers in same bill).

select s.cus_id
from subsc s
where exists (select 1 from bill
where bill_no = s.cus_id
and b_status = 'O')
and s_status = 'A'
group by s.cus_id
having count(sub_no) = 2


Problem : The above query will give the cus_id (or rather
bill_no) which are in open status (b_status ='O) and which
are having TWO ACTIVE Subscribers (s_status ='A') in it.
However, this query will also lists the cus_id/bill_no
which are having more than TWO subscribers in it
(but only two subscriber will be in Active status (s_status
= 'A') and the others will be in s_status = 'C' or s_status
= 'S'.


Help needed: I want to write a query which will fetch ONLY
the cus_id/bill_no which are in open status (b_status ='O')
and which are having ONLY TWO ACTIVE subscribers (s_status
='A') in it.



B--> If I include the sub_no in the above query then NO row
are returned.

select s.cus_id, s.sub_no
from subsc s
where exists (select 1 from bill
where bill_no = s.cus_id
and b_status = 'O')
and s_status = 'A'
group by s.cus_id, s.sub_no
having count(sub_no) = 2

Help needed: I want to modify the above query which will
fetch ONLY the cus_id/bill_no which are in open status
(b_status ='O') and which are having ONLY TWO ACTIVE
subscribers (s_status ='A') in it ALONG with the sub_no.


Thanks a lot in advance.


Regards,

Nitin


No Answer is Posted For this Question
Be the First to Post Answer

Post New Answer

More SQL PLSQL Interview Questions

select * from emp where sal in(select max(sal) from emp) here there is any limit for in operator how many values accpect ?

2 Answers  


What is normalization ?

9 Answers   BirlaSoft, CTS, HCL,


Create a procedure to delete certain records from a table and display the total number of records deleted in this process. (Condition for deletion can be of ur choice, for instance delete all records where eid='')

2 Answers  


Does inner join return duplicate rows?

0 Answers  


Can we relate two different tables from two different users in ORACLE,PL/SQL?

4 Answers  


How to count the no of records of a table without using COUNT function?

11 Answers   TCS, Tesco,


What is an alias command?

0 Answers  


How can I pass the inner procedure value to outer procedure ?

2 Answers  


why sql is used as interpreter frequently rather than a compile?

1 Answers  


How to write a procedure for displying the data in a TREE or (PARENT and CHILD ) relationship , for ex: A is the main project id, for this project B,C,D are sub tasks(sub project id's) for B the sub tasks are e,f,g and for c is h ,i ,j and for d is k,l,m now i need to display the o/p in a TREE fashion pls help me , thanks in advance surendra

2 Answers   Zensar,


What is orm in sql?

0 Answers  


How do you display "13th of November, 17 days left for month end" without hardcoding the date.

3 Answers  


Categories