-
不知道你为什么需要临时表格
-
不确定为什么需要使用union vs union all
-
case when DEPARTMENT_DESC in IN ('BILLING', 'TechOps') then 'Customer Service' else DEPARTMENT_DESC end
.
保留union,但使用union all并避免临时表。
/****** Script for SelectTopNRows command from SSMS ******/
SELECT CONCAT ('CS', 'Week', datepart(wk, ROW_DATE)) As Dept_Date
, datepart(wk, ROW_DATE) as weeknum
, CONCAT('CS','DEPT') AS DEPT
, SUM([CALLS_OFFERED_ACTUALS]) As LCW_Calls_Offered
, MAX(LCW) AS LCW
, SUM(ANSTIME) / SUM(CALLS_ANSWERED_ACTUALS) AS ASA
, SUM(HANDLED_TIME) / SUM(CALLS_ANSWERED_ACTUALS) AS AHT
, SUM(HANDLED_TIME) as handletime
, SUM(CALLS_OFFERED_FCST) AS Call_Target
, SUM(CALLS_ANSWERED_ACTUALS) as call_answered
, CAST(1.000*(SUM(TRANSFERS)+SUM(CONFERENCE)) / SUM(CALLS_ANSWERED_ACTUALS) AS DECIMAL(19,3)) AS Transf_Rate
, CAST(1.000*(SUM(CALLS_ABD_ACTUALS)) / SUM([CALLS_OFFERED_ACTUALS]) AS DECIMAL(19,3)) AS Abandon_Rate
, 1-CAST(1.000*(SUM(LCW60)) / SUM(INT_CNT) AS DECIMAL(19,3)) AS LCW_INT
, CAST(1.000*(SUM(ONLINETIME)-SUM(AVAILTIME)-
, SUM(ALARMTIME))/SUM(ONLINETIME) AS DECIMAL(19,3)) AS Occupancy
, CAST(1.000*(SUM(PRODTIME)) / SUM(ATWORKTIME) AS DECIMAL(19,3)) AS Productivity
, CAST(1.000*(SUM(AVAILTIME)) / SUM(ATWORKTIME) AS DECIMAL(19,3)) AS Availab
, CAST(1.000*(SUM(OVERTIME)) / SUM(WORKFORCETIME) AS DECIMAL(19,3)) AS Overtime
, CAST(1.000*(SUM(UNPROD_TIME_UNPLANNED)) / SUM(WORKFORCETIME) AS DECIMAL(19,3)) AS Unplanned_Shrink
, CAST(1.000*(SUM(UNPROD_TIME_PLANNED)) / SUM(WORKFORCETIME) AS DECIMAL(19,3)) AS Planned_Shrink
, CAST(1.000*(SUM(CALLS_ANSWERED_INT1)+SUM(CALLS_ANSWERED_INT2)) / SUM(CALLS_OFFERED_ACTUALS) AS DECIMAL(19,3)) AS SL_Within_20
, CAST(1.000*(SUM(CALLS_ANSWERED_INT1)+SUM(CALLS_ANSWERED_INT2)+SUM(CALLS_ANSWERED_INT3)+SUM(CALLS_ANSWERED_INT4)+SUM(CALLS_ANSWERED_INT5)+SUM(CALLS_ANSWERED_INT6)) / SUM(CALLS_OFFERED_ACTUALS) AS DECIMAL(19,3)) AS Calls_Within_60
, 1-CAST(1.000*(SUM(LCW300)) / SUM(INT_CNT) AS DECIMAL(19,3)) AS LCW_INT1
, 1-CAST(1.000*(SUM(LCW120)) / SUM(INT_CNT) AS DECIMAL(19,3)) AS LCW_INT2
FROM [GEMDB].[dbo].[v_calls_LCW_Splitday]
WHERE datepart(wk, ROW_DATE) >= (datepart(wk, GETDATE()) - 6)
AND datepart(year, ROW_DATE) = 2017
AND DEPARTMENT_DESC IN ('BILLING', 'TechOps')
GROUP BY datepart(wk, ROW_DATE) --((CALLS_ANSWERED_INT1 + CALLS_ANSWERED_INT2) / [CALLS_OFFERED_ACTUALS])
ORDER BY datepart(wk, ROW_DATE)
UNION ALL
SELECT CONCAT (DEPARTMENT_DESC, 'Week', datepart(wk, ROW_DATE)) As Dept_Date
, datepart(wk, ROW_DATE) as weeknum
, DEPARTMENT_DESC AS DEPT
, SUM([CALLS_OFFERED_ACTUALS]) As LCW_Calls_Offered
, MAX(LCW) AS LCW
, SUM(ANSTIME) / SUM(CALLS_ANSWERED_ACTUALS) AS ASA
, SUM(HANDLED_TIME) / SUM(CALLS_ANSWERED_ACTUALS) AS AHT
, SUM(HANDLED_TIME) as handletime
, SUM(CALLS_OFFERED_FCST) AS Call_Target
, SUM(CALLS_ANSWERED_ACTUALS) as call_answered
, CAST(1.000*(SUM(TRANSFERS)+SUM(CONFERENCE)) / SUM(CALLS_ANSWERED_ACTUALS) AS DECIMAL(19,3)) AS Transf_Rate
, CAST(1.000*(SUM(CALLS_ABD_ACTUALS)) / SUM([CALLS_OFFERED_ACTUALS]) AS DECIMAL(19,3)) AS Abandon_Rate
, 1-CAST(1.000*(SUM(LCW60)) / SUM(INT_CNT) AS DECIMAL(19,3)) AS LCW_INT
, CAST(1.000*(SUM(ONLINETIME)-SUM(AVAILTIME)-SUM(ALARMTIME))/SUM(ONLINETIME) AS DECIMAL(19,3)) AS Occupancy
, CAST(1.000*(SUM(PRODTIME)) / SUM(ATWORKTIME) AS DECIMAL(19,3)) AS Productivity
, CAST(1.000*(SUM(AVAILTIME)) / SUM(ATWORKTIME) AS DECIMAL(19,3)) AS Availab
, CAST(1.000*(SUM(OVERTIME)) / SUM(WORKFORCETIME) AS DECIMAL(19,3)) AS Overtime
, CAST(1.000*(SUM(UNPROD_TIME_UNPLANNED)) / SUM(WORKFORCETIME) AS DECIMAL(19,3)) AS Unplanned_Shrink
, CAST(1.000*(SUM(UNPROD_TIME_PLANNED)) / SUM(WORKFORCETIME) AS DECIMAL(19,3)) AS Planned_Shrink
, CAST(1.000*(SUM(CALLS_ANSWERED_INT1)+SUM(CALLS_ANSWERED_INT2)) / SUM(CALLS_OFFERED_ACTUALS) AS DECIMAL(19,3)) AS SL_Within_20
, CAST(1.000*(SUM(CALLS_ANSWERED_INT1)+SUM(CALLS_ANSWERED_INT2)+SUM(CALLS_ANSWERED_INT3)+SUM(CALLS_ANSWERED_INT4)+SUM(CALLS_ANSWERED_INT5)+SUM(CALLS_ANSWERED_INT6)) / SUM(CALLS_OFFERED_ACTUALS) AS DECIMAL(19,3)) AS Calls_Within_60
, 1-CAST(1.000*(SUM(LCW300)) / SUM(INT_CNT) AS DECIMAL(19,3)) AS LCW_INT1
, 1-CAST(1.000*(SUM(LCW120)) / SUM(INT_CNT) AS DECIMAL(19,3)) AS LCW_INT2
FROM [GEMDB].[dbo].[v_calls_LCW_Splitday]
WHERE datepart(wk, ROW_DATE) >= (datepart(wk, GETDATE()) - 6)
AND datepart(year, ROW_DATE) = 2017
GROUP BY datepart(wk, ROW_DATE)
, DEPARTMENT_DESC --((CALLS_ANSWERED_INT1 + CALLS_ANSWERED_INT2) / [CALLS_OFFERED_ACTUALS])
ORDER BY datepart(wk, ROW_DATE)
case when DEPARTMENT_DESC in IN ('BILLING', 'TechOps')
then 'Customer Service'
else DEPARTMENT_DESC end
所以我接受了你的第一个问题,就这么做了。
SELECT CONCAT(case when DEPARTMENT_DESC in IN ('BILLING', 'TechOps')
then 'Customer Service'
else DEPARTMENT_DESC end
, 'Week', datepart(wk, ROW_DATE)) As Dept_Date
, datepart(wk, ROW_DATE) as weeknum
, case when DEPARTMENT_DESC in IN ('BILLING', 'TechOps')
then 'Customer Service'
else DEPARTMENT_DESC end AS DEPT
, SUM([CALLS_OFFERED_ACTUALS]) As LCW_Calls_Offered
, MAX(LCW) AS LCW
, SUM(ANSTIME) / SUM(CALLS_ANSWERED_ACTUALS) AS ASA
, SUM(HANDLED_TIME) / SUM(CALLS_ANSWERED_ACTUALS) AS AHT
, SUM(HANDLED_TIME) as handletime
, SUM(CALLS_OFFERED_FCST) AS Call_Target
, SUM(CALLS_ANSWERED_ACTUALS) as call_answered
, CAST(1.000*(SUM(TRANSFERS)+SUM(CONFERENCE)) / SUM(CALLS_ANSWERED_ACTUALS) AS DECIMAL(19,3)) AS Transf_Rate
, CAST(1.000*(SUM(CALLS_ABD_ACTUALS)) / SUM([CALLS_OFFERED_ACTUALS]) AS DECIMAL(19,3)) AS Abandon_Rate
, 1-CAST(1.000*(SUM(LCW60)) / SUM(INT_CNT) AS DECIMAL(19,3)) AS LCW_INT
, CAST(1.000*(SUM(ONLINETIME)-SUM(AVAILTIME)-SUM(ALARMTIME))/SUM(ONLINETIME) AS DECIMAL(19,3)) AS Occupancy
, CAST(1.000*(SUM(PRODTIME)) / SUM(ATWORKTIME) AS DECIMAL(19,3)) AS Productivity
, CAST(1.000*(SUM(AVAILTIME)) / SUM(ATWORKTIME) AS DECIMAL(19,3)) AS Availab
, CAST(1.000*(SUM(OVERTIME)) / SUM(WORKFORCETIME) AS DECIMAL(19,3)) AS Overtime
, CAST(1.000*(SUM(UNPROD_TIME_UNPLANNED)) / SUM(WORKFORCETIME) AS DECIMAL(19,3)) AS Unplanned_Shrink
, CAST(1.000*(SUM(UNPROD_TIME_PLANNED)) / SUM(WORKFORCETIME) AS DECIMAL(19,3)) AS Planned_Shrink
, CAST(1.000*(SUM(CALLS_ANSWERED_INT1)+SUM(CALLS_ANSWERED_INT2)) / SUM(CALLS_OFFERED_ACTUALS) AS DECIMAL(19,3)) AS SL_Within_20
, CAST(1.000*(SUM(CALLS_ANSWERED_INT1)+SUM(CALLS_ANSWERED_INT2)+SUM(CALLS_ANSWERED_INT3)+SUM(CALLS_ANSWERED_INT4)+SUM(CALLS_ANSWERED_INT5)+SUM(CALLS_ANSWERED_INT6)) / SUM(CALLS_OFFERED_ACTUALS) AS DECIMAL(19,3)) AS Calls_Within_60
, 1-CAST(1.000*(SUM(LCW300)) / SUM(INT_CNT) AS DECIMAL(19,3)) AS LCW_INT1
, 1-CAST(1.000*(SUM(LCW120)) / SUM(INT_CNT) AS DECIMAL(19,3)) AS LCW_INT2
FROM [GEMDB].[dbo].[v_calls_LCW_Splitday]
WHERE datepart(wk, ROW_DATE) >= (datepart(wk, GETDATE()) - 6)
AND datepart(year, ROW_DATE) = 2017
GROUP BY datepart(wk, ROW_DATE)
, case when DEPARTMENT_DESC in IN ('BILLING', 'TechOps')
then 'Customer Service'
else DEPARTMENT_DESC end --((CALLS_ANSWERED_INT1 + CALLS_ANSWERED_INT2) / [CALLS_OFFERED_ACTUALS])
ORDER BY datepart(wk, ROW_DATE