I have 4 table with below structure:
Table "Customer_Info"
create table Customer_Info
(
Customer_Number int,
Customer_Issued_Branch int,
<Other Columns related to customer>
)
Example Data:
Insert into Customer_Info(Customer_Number,Customer_Issued_Branch)
values (1,1001),(2,1002),(3,1003),(4,1001)
Table "Customer_Transaction_Info"
create table Customer_Transaction_Info
(
Customer_Number int,
Channel_Number int,
Transaction_Count int,
<Other columns related to customer transactions >
)
Example data:
Insert into Customer_Transaction_Info(Customer_Number,Channel_Number,Transaction_Count)
Values(1,5,2),(1,6,1),(1,3,1),(1,1,1),(1,2,1),(2,5,1),(2,1,1)
Table "Customer_Channel_Info"
create table Customer_Channel_Info
(
Customer_Number int,
Channel_Number int,
Channel_Branch_code int
)
Example data:
insert into Customer_Channel_Info (Customer_Number,Channel_Number,Channel_Branch_code)
values (1,5,1001),(1,6,1002),(1,3,1003),(2,5,1004),(3,6,1005),(4,3,1006)
Table "Branch_Info"
create table Branch_Info
(
Branch_Code int,
New_Branch-Code int
)
Example Data :
insert into Branch_Info(Branch_Code,New_Branch-Code)
values(1001,1010),(1002,1010),(1003,1010),(1004,1010),(1005,1010),(1006,1010)
The problem is that everything seems fine until this part of my query on t4.Branch_Code = t2.Channel_Branch_code
. what I mean is that the select *
of below query, without group by and sum()
, gives me 7 records, but as soon as I add group by part and sum, the below query returns 4 records! It's wired and I do not understand the reason! both case statements,in group part and select part of the query are exactly the same so why some record are being missed?
My Query is :
select t1.Customer_Number,
case
when t1.Channel_Number in (1, 2) then t3.Customer_Issued_Branch
else t4.New_Branch-Code
end brncode,
sum(case
when t1.Channel_Number = 1 then t1.Transaction_Count
else 0
end) Tel_Count
from Customer_Transaction_Info t1
left join Customer_Channel_Info t2
on t1.Customer_Number= t2.Customer_Number
and t1.Channel_Number = t2.Channel_Number
left join Customer_Info t3
on t3.Customer_Number = t1.Customer_Number
left join Branch_Info t4
on t4.Branch_Code = t2.Channel_Branch_code
group by t1.customer_num,------------------------>/*This part*/
case
when t1.Channel_Number in (1, 2) then
t3.cust_branch_cod
else
t4.New_Branch
end
Thanks in advance