使用 Teradata,我的数据在一列中有 6 个选项,我希望将六个选项中的每一个都放在一个单独的列中,并计算它有多少条目,目前我有 6 个单独的select
语句和一个在底部选择将它们连接在一起,无论如何可以在一个语句中得到它
输出如下所示:
AgentName|emp_number|Manager_Empl_No| Hardware/Fault| Customer Experience| Prefer another Provider| Coverage/Serviceability| Costs Service| No Longer Required |Customer Usage
name 1| xxxx| xxxx |15| 27| 10| 3| 7| 22| 6
Name 2| xxxx| xxxx |19 |6 |29 |22 |10 |42 |4
我的代码是....
--- Hardware fault ---
create volatile table hardware as
(
select
CSR_FirstName||' '||CSR_LastName as AgentName
,emp_number
,Manager_empl_no
,count(service) as "Hardware/Fault"
from ipshare.ORR_retention_database a
full join RMOIDS
on emp_number = Employee_No
where date_created between (sel start_date from startend_date) and (sel end_date from startend_date)
and referred_product = 'Mobile'
and decline_reason1 = 'Hardware/Fault'
group by (AgentName,emp_number,Manager_empl_no,decline_reason1)
qualify RANK() over (partition by AgentName order by AgentName DESC)=1
)
with data on commit preserve rows;
sel * from hardware
--- Customer Experience ---
create volatile table custex as
(
select
CSR_FirstName||' '||CSR_LastName as AgentName
,emp_number
,Manager_empl_no
,count(service) as "Customer Experience"
from ipshare.ORR_retention_database a
full join RMOIDS
on emp_number = Employee_No
where date_created between (sel start_date from startend_date) and (sel end_date from startend_date)
and referred_product = 'Mobile'
and decline_reason1 = 'Customer Experience'
group by (AgentName,emp_number,Manager_empl_no,decline_reason1)
qualify RANK() over (partition by AgentName order by AgentName DESC)=1
)
with data on commit preserve rows;
---Prefer another Provider
create volatile table pap as
(
select
CSR_FirstName||' '||CSR_LastName as AgentName
,emp_number
,Manager_empl_no
,count(service) as "Prefer another Provider"
from ipshare.ORR_retention_database a
full join RMOIDS
on emp_number = Employee_No
where date_created between (sel start_date from startend_date) and (sel end_date from startend_date)
and referred_product = 'Mobile'
and decline_reason1 = 'Prefer another Provider'
group by (AgentName,emp_number,Manager_empl_no,decline_reason1)
qualify RANK() over (partition by AgentName order by AgentName DESC)=1
)
with data on commit preserve rows;
----Coverage/Serviceability
create volatile table coverage as
(
select
CSR_FirstName||' '||CSR_LastName as AgentName
,emp_number
,Manager_empl_no
,count(service) as "Coverage/Serviceability"
from ipshare.ORR_retention_database a
full join RMOIDS
on emp_number = Employee_No
where date_created between (sel start_date from startend_date) and (sel end_date from startend_date)
and referred_product = 'Mobile'
and decline_reason1 = 'Coverage/Serviceability'
group by (AgentName,emp_number,Manager_empl_no,decline_reason1)
qualify RANK() over (partition by AgentName order by AgentName DESC)=1
)
with data on commit preserve rows;
---Cost
create volatile table cost as
(
select
CSR_FirstName||' '||CSR_LastName as AgentName
,emp_number
,Manager_empl_no
,count(service) as "Costs"
from ipshare.ORR_retention_database a
full join RMOIDS
on emp_number = Employee_No
where date_created between (sel start_date from startend_date) and (sel end_date from startend_date)
and referred_product = 'Mobile'
and decline_reason1 = 'Costs'
group by (AgentName,emp_number,Manager_empl_no,decline_reason1)
qualify RANK() over (partition by AgentName order by AgentName DESC)=1
)
with data on commit preserve rows;
--Service no longer required
create volatile table snlr as
(
select
CSR_FirstName||' '||CSR_LastName as AgentName
,emp_number
,Manager_empl_no
,count(service) as "Service No Longer Required"
from ipshare.ORR_retention_database a
full join RMOIDS
on emp_number = Employee_No
where date_created between (sel start_date from startend_date) and (sel end_date from startend_date)
and referred_product = 'Mobile'
and decline_reason1 = 'Service No Longer Required'
group by (AgentName,emp_number,Manager_empl_no,decline_reason1)
qualify RANK() over (partition by AgentName order by AgentName DESC)=1
)
with data on commit preserve rows;
--Customer Usage
create volatile table usage as
(
select
CSR_FirstName||' '||CSR_LastName as AgentName
,emp_number
,Manager_empl_no
,count(service) as "Customer Usage"
from ipshare.ORR_retention_database a
full join RMOIDS
on emp_number = Employee_No
where date_created between (sel start_date from startend_date) and (sel end_date from startend_date)
and referred_product = 'Mobile'
and decline_reason1 = 'Customer Usage'
group by (AgentName,emp_number,Manager_empl_no,decline_reason1)
qualify RANK() over (partition by AgentName order by AgentName DESC)=1
)
with data on commit preserve rows;
sel a.*
,b."Customer Experience"
,c."Prefer another Provider"
,d."Coverage/Serviceability"
,e."Costs"
,f."Service No Longer Required"
,g."Customer Usage"
from hardware a
inner join custex b
on a.emp_number = b.emp_number
inner join pap c
on a.emp_number = c.emp_number
inner join coverage d
on a.emp_number = d.emp_number
inner join cost e
on a.emp_number = e.emp_number
inner join snlr f
on a.emp_number = f.emp_number
inner join usage g
on a.emp_number = g.emp_number