尝试在内连接上使用CASE语句,而我所得到的只是语法错误,有人对此有任何建议吗?
这是代码
SELECT
Call_type_ID,
SUM (staging.dbo.outgoing_measure.ring_time) AS Ring_Time,
SUM (staging.dbo.outgoing_measure.hold_time) As Hold_Time,
SUM (staging.dbo.outgoing_measure.talk_time) AS Talk_Time,
SUM (staging.dbo.outgoing_measure.acw_time) AS ACW_Time,
COUNT(*) CallCount
FROM outgoing_measure
INNER JOIN datamartend.dbo.Call_Type_Dim ON
CASE
WHEN
CTICallType_ID = 1
AND CTIAgentCallType_ID = 0
AND Abandoned IS NULL
AND AnsTime > 0
AND CallState IS NULL
THEN Call_Type_ID = 10
WHEN
CTICallType_ID = 1
AND CTIAgentCallType_ID = 0
AND Abandoned IS NULL
AND AnsTime > 0
AND CallState = 1
THEN call_Type_id = 11
WHEN
CTICallType_ID = 1
AND CTIAgentCallType_ID = 0
AND Abandoned = 1
AND AnsTime IS NULL
AND CallState IS NULL
THEN call_type_ID = 12
ELSE call_type_id = 1
END
Group by call_Type_id
这是我第一次使用案例陈述,更不用说将它们与内部联接相结合,所以如果我完全搞砸了,我很抱歉。
我得到的语法错误是:
=和WHEN这里
的语法不正确THEN Call_Type_ID = 10
WHEN
错误的语法期望GROUP BY上的CONVERSION
答案 0 :(得分:25)
您似乎正在尝试在案例中创建Where子句,但您应该将案例的结果与Call_Type_ID(或您想要的任何其他字段)进行比较,如我在下面写的示例中所示 希望它有所帮助!
有时我会在我的外壳上使用支架,以便更容易看到它们的起点和终点。
INNER JOIN datamartend.dbo.Call_Type_Dim ON
(CASE
WHEN CTICallType_ID = 1
AND CTIAgentCallType_ID = 0
AND Abandoned IS NULL
AND AnsTime > 0
AND CallState IS NULL
THEN 10
WHEN CTICallType_ID = 1
AND CTIAgentCallType_ID = 0
AND Abandoned IS NULL
AND AnsTime > 0
AND CallState = 1
THEN 11
WHEN
CTICallType_ID = 1
AND CTIAgentCallType_ID = 0
AND Abandoned = 1
AND AnsTime IS NULL
AND CallState IS NULL
THEN 12
ELSE 1
END) = Call_Type_ID -- Insert something here to join on.
答案 1 :(得分:-3)
select * from emp;
select * from dept;
............................................... ............................
select Ename,Job,dname,
Case job
when 'Clerk' then 'C'
when 'Salesman' then 'S'
when 'Manager' then 'M'
when 'Analyst' then 'A'
else 'Other'
end as Demo
来自emp.deptno=dept.deptno ;
上的emp内部联接部门的
............................................... .................................
我在这里将表视为oracle默认表。