求高手sql2005的函数改成oracle的函数语法该怎么变动?
时间:2011-11-06
来源:互联网
CREATE FUNCTION [dbo].[fun_AgtRateByMin]
( @start DATETIME,@end DATETIME ,@uid VARCHAR(20) )
RETURNS TABLE
AS
RETURN
(
SELECT
u.uid AS [工号]
,u.name AS [姓名]
,ISNULL(SUM(CASE WHEN a.io=0 THEN 1 ELSE 0 END),0) AS [呼入总量]
,ISNULL(SUM(CASE WHEN a.io=0 AND a.AnswerFlag=1 THEN 1 ELSE 0 END),0) AS [呼入接通量]
,ISNULL(SUM(CASE WHEN a.io=0 AND a.AnswerFlag=1 THEN a.TalkDuration ELSE 0 END),0) AS [呼入通话时长]
,ISNULL(SUM(CASE WHEN a.io=1 THEN 1 ELSE 0 END),0) AS [呼出总量]
,ISNULL(SUM(CASE WHEN a.io=1 AND a.AnswerFlag=1 THEN 1 ELSE 0 END),0) AS [呼出接通量]
,ISNULL(SUM(CASE WHEN a.io=1 AND a.AnswerFlag=1 THEN a.TalkDuration ELSE 0 END),0) AS [呼出通话时长]
,i.freesec AS [空闲时长]
,i.pausesec AS [小休时长]
,i.doingsec AS [后台时长]
,i.confsec AS [会议时长]
,i.traningsec AS [培训时长]
,i.dinnersec AS [就餐时长]
FROM dbo.rc_calllog a
LEFT JOIN
(
SELECT
uid
,ISNULL(SUM(CASE WHEN status='空闲' THEN duration ELSE 0 END),0) AS freesec
,ISNULL(SUM(CASE WHEN status='小休' THEN duration ELSE 0 END),0) AS pausesec
,ISNULL(SUM(CASE WHEN status='主动服务' THEN duration ELSE 0 END),0) AS doingsec
,ISNULL(SUM(CASE WHEN STATUS='会议' THEN duration ELSE 0 END),0) AS confsec
,ISNULL(SUM(CASE WHEN STATUS='培训' THEN duration ELSE 0 END),0) AS traningsec
,ISNULL(SUM(CASE WHEN STATUS='就餐' THEN duration ELSE 0 END),0) AS dinnersec
FROM dbo.rc_statrecord WHERE starttime BETWEEN @start AND @end GROUP BY uid
)i ON a.AgentId= i.uid
INNER JOIN dbo.rc_operator u ON a.AgentId=u.uid
WHERE a.InboundCallTime BETWEEN @start AND @end OR a.StartRingTime BETWEEN @start AND @end
GROUP BY u.uid,u.name,i.freesec,i.pausesec,i.doingsec,i.confsec,i.traningsec,i.dinnersec
)
( @start DATETIME,@end DATETIME ,@uid VARCHAR(20) )
RETURNS TABLE
AS
RETURN
(
SELECT
u.uid AS [工号]
,u.name AS [姓名]
,ISNULL(SUM(CASE WHEN a.io=0 THEN 1 ELSE 0 END),0) AS [呼入总量]
,ISNULL(SUM(CASE WHEN a.io=0 AND a.AnswerFlag=1 THEN 1 ELSE 0 END),0) AS [呼入接通量]
,ISNULL(SUM(CASE WHEN a.io=0 AND a.AnswerFlag=1 THEN a.TalkDuration ELSE 0 END),0) AS [呼入通话时长]
,ISNULL(SUM(CASE WHEN a.io=1 THEN 1 ELSE 0 END),0) AS [呼出总量]
,ISNULL(SUM(CASE WHEN a.io=1 AND a.AnswerFlag=1 THEN 1 ELSE 0 END),0) AS [呼出接通量]
,ISNULL(SUM(CASE WHEN a.io=1 AND a.AnswerFlag=1 THEN a.TalkDuration ELSE 0 END),0) AS [呼出通话时长]
,i.freesec AS [空闲时长]
,i.pausesec AS [小休时长]
,i.doingsec AS [后台时长]
,i.confsec AS [会议时长]
,i.traningsec AS [培训时长]
,i.dinnersec AS [就餐时长]
FROM dbo.rc_calllog a
LEFT JOIN
(
SELECT
uid
,ISNULL(SUM(CASE WHEN status='空闲' THEN duration ELSE 0 END),0) AS freesec
,ISNULL(SUM(CASE WHEN status='小休' THEN duration ELSE 0 END),0) AS pausesec
,ISNULL(SUM(CASE WHEN status='主动服务' THEN duration ELSE 0 END),0) AS doingsec
,ISNULL(SUM(CASE WHEN STATUS='会议' THEN duration ELSE 0 END),0) AS confsec
,ISNULL(SUM(CASE WHEN STATUS='培训' THEN duration ELSE 0 END),0) AS traningsec
,ISNULL(SUM(CASE WHEN STATUS='就餐' THEN duration ELSE 0 END),0) AS dinnersec
FROM dbo.rc_statrecord WHERE starttime BETWEEN @start AND @end GROUP BY uid
)i ON a.AgentId= i.uid
INNER JOIN dbo.rc_operator u ON a.AgentId=u.uid
WHERE a.InboundCallTime BETWEEN @start AND @end OR a.StartRingTime BETWEEN @start AND @end
GROUP BY u.uid,u.name,i.freesec,i.pausesec,i.doingsec,i.confsec,i.traningsec,i.dinnersec
)
作者: pdw391624592 发布时间: 2011-11-06
SQL code
CREATE FUNCTION [dbo].[fun_AgtRateByMin] ( @start DATETIME,@end DATETIME ,@uid VARCHAR(20) ) RETURNS TABLE AS RETURN ( SELECT u.uid AS [工号] ,u.name AS [姓名] ,nvl(SUM(CASE WHEN a.io=0 THEN 1 ELSE 0 END),0) AS [呼入总量] ,nvl(SUM(CASE WHEN a.io=0 AND a.AnswerFlag=1 THEN 1 ELSE 0 END),0) AS [呼入接通量] ,nvl(SUM(CASE WHEN a.io=0 AND a.AnswerFlag=1 THEN a.TalkDuration ELSE 0 END),0) AS [呼入通话时长] ,nvl(SUM(CASE WHEN a.io=1 THEN 1 ELSE 0 END),0) AS [呼出总量] ,nvl(SUM(CASE WHEN a.io=1 AND a.AnswerFlag=1 THEN 1 ELSE 0 END),0) AS [呼出接通量] ,nvl(SUM(CASE WHEN a.io=1 AND a.AnswerFlag=1 THEN a.TalkDuration ELSE 0 END),0) AS [呼出通话时长] ,i.freesec AS [空闲时长] ,i.pausesec AS [小休时长] ,i.doingsec AS [后台时长] ,i.confsec AS [会议时长] ,i.traningsec AS [培训时长] ,i.dinnersec AS [就餐时长] FROM dbo.rc_calllog a LEFT JOIN ( SELECT uid ,nvl(SUM(CASE WHEN status='空闲' THEN duration ELSE 0 END),0) AS freesec ,nvl(SUM(CASE WHEN status='小休' THEN duration ELSE 0 END),0) AS pausesec ,nvl(SUM(CASE WHEN status='主动服务' THEN duration ELSE 0 END),0) AS doingsec ,nvl(SUM(CASE WHEN STATUS='会议' THEN duration ELSE 0 END),0) AS confsec ,nvl(SUM(CASE WHEN STATUS='培训' THEN duration ELSE 0 END),0) AS traningsec ,nvl(SUM(CASE WHEN STATUS='就餐' THEN duration ELSE 0 END),0) AS dinnersec FROM dbo.rc_statrecord WHERE starttime BETWEEN @start AND @end GROUP BY uid )i ON a.AgentId= i.uid INNER JOIN dbo.rc_operator u ON a.AgentId=u.uid WHERE a.InboundCallTime BETWEEN @start AND @end OR a.StartRingTime BETWEEN @start AND @end GROUP BY u.uid,u.name,i.freesec,i.pausesec,i.doingsec,i.confsec,i.traningsec,i.dinnersec )
作者: lzd_83 发布时间: 2011-11-06
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28