Reputation: 39
I need a query to get total count for each unique customer id by using type names
for example,
Customer_Id Customer_Name Service_Type
CU00001 THANGARAJ.L FREE SERVICE 1
CU00001 THANGARAJ.L FREE SERVICE 2
CU00001 THANGARAJ.L FREE SERVICE 3
CU00001 THANGARAJ.L FREE SERVICE 4
CU00010 VARATHARAJ N FREE SERVICE 1
CU00010 VARATHARAJ N FREE SERVICE 2
i m using simple query like dis
select distinct(cm.CUSTOMER_ID), cm.CUST_NAME,
(case when jm.JOBCARD_TYPE = 'FREE SERVICE 1' then 'FREE SERVICE 1'
when jm.JOBCARD_TYPE = 'FREE SERVICE 2' then 'FREE SERVICE 2'
when jm.JOBCARD_TYPE = 'FREE SERVICE 3' then 'FREE SERVICE 3'
when jm.JOBCARD_TYPE = 'FREE SERVICE 4' then 'FREE SERVICE 4'
when jm.JOBCARD_TYPE = 'PAID SERVICE 1' then 'PAID SERVICE 1'
when jm.JOBCARD_TYPE = 'PAID SERVICE 2' then 'PAID SERVICE 2'
when jm.JOBCARD_TYPE = 'PAID SERVICE 3' then 'PAID SERVICE 3'
when jm.JOBCARD_TYPE = 'PAID SERVICE 4' then 'PAID SERVICE 4'
when jm.JOBCARD_TYPE = 'PAID SERVICE 5' then 'PAID SERVICE 5'
when jm.JOBCARD_TYPE = 'PAID SERVICE 6' then 'PAID SERVICE 6' end) as SERVICE_TYPE
from [dbo].[HMSI_SATB_BOOKING] bk
left join [dbo].[HMSI_SRTB_JOBCARD_MASTER] jm
on jm.model_no = bk.MODEL_DESCR and jm.CUSTOMER_ID = bk.CUSTOMER_ID
left join [dbo].[HMSI_DMS_SERVICE_REMAINDER_SMS] sr
on sr.BOOKING_NO = bk.BOOKING_NO
left join [dbo].[HMSI_SATB_CUSTOMER_MASTER] cm
on cm.CUSTOMER_ID = bk.CUSTOMER_ID
left join [dbo].[HMSI_SATB_MODEL_MASTER] mm
on mm.MODEL_DESCR = bk.MODEL_DESCR
left join [dbo].[HMSI_DMS_SERVICE_REMAINDER] sm
on sm.MODEL_NAME = mm.MODEL_NAME where bk.INVOICE_DATE is not null and jm.JOBCARD_TYPE like '%SERVICE%'
and getting the above table
i need to get the table as
Customer_Id Customer_Name Count Service_Type
CU00001 THANGARAJ.L 4 FREE SERVICE 1
CU00001 THANGARAJ.L 4 FREE SERVICE 2
CU00001 THANGARAJ.L 4 FREE SERVICE 3
CU00001 THANGARAJ.L 4 FREE SERVICE 4
CU00010 VARATHARAJ N 2 FREE SERVICE 1
CU00010 VARATHARAJ N 2 FREE SERVICE 2
CU01964 LAKSHMANAPANDI K 3 FREE SERVICE 1
CU01964 LAKSHMANAPANDI K 3 FREE SERVICE 3
CU01964 LAKSHMANAPANDI K 3 FREE SERVICE 4
can any one help me to solve dis issue plz.
Upvotes: 0
Views: 56
Reputation: 44336
Try this:
;with x as
(
select distinct(cm.CUSTOMER_ID), cm.CUST_NAME,
(case when jm.JOBCARD_TYPE like 'FREE SERVICE [1-4]'
OR jm.JOBCARD_TYPE like 'PAID SERVICE [1-6]'
then jm.JOBCARD_TYPE END) as SERVICE_TYPE
from [dbo].[HMSI_SATB_BOOKING] bk
left join [dbo].[HMSI_SRTB_JOBCARD_MASTER] jm
on jm.model_no = bk.MODEL_DESCR and jm.CUSTOMER_ID = bk.CUSTOMER_ID
left join [dbo].[HMSI_DMS_SERVICE_REMAINDER_SMS] sr
on sr.BOOKING_NO = bk.BOOKING_NO
left join [dbo].[HMSI_SATB_CUSTOMER_MASTER] cm
on cm.CUSTOMER_ID = bk.CUSTOMER_ID
left join [dbo].[HMSI_SATB_MODEL_MASTER] mm
on mm.MODEL_DESCR = bk.MODEL_DESCR
left join [dbo].[HMSI_DMS_SERVICE_REMAINDER] sm
on sm.MODEL_NAME = mm.MODEL_NAME where bk.INVOICE_DATE is not null and jm.JOBCARD_TYPE like '%SERVICE%'
)
SELECT Customer_Id,Customer_Name,
count(*) over (partition by customer_id) as [Count],Service_Type
from x
Upvotes: 1