我担心我的'CASE WHEN'语句在下面不能正常工作,我想知道是否有不同的方法来做我想做的事情。基本上在我的表cdrdb.session a
中我有一个名为LEGTYPE1
的字段,在cdrdb.callsummary b
我有一个名为ANSWERED
的字段。
在test.AMBrawDataDump
中,我正在尝试插入基于前几个表中每个电话的某些列。基本上,如果LEGTYPE1 = 2 and ANSWERED = 1
那是一个入站接听电话。如果LEGTYPE1 = 2 and ANSWERED = 0
这是一个未接来电,最后,如果LEGTYPE1 = 1
是一个外拨电话。
理想情况下,表中的每个记录在插入之后,应该只有一列中的1列和其他2列中的0。我看到很多我的记录在遗漏和出站列中都有1,这是不正确的。除了使用CASE WHEN之外,还有更明确的方法吗?
Insert into test.AMBrawDataDump(
Extension,
Start_Time,
End_Time,
Duration,
Inbound_Answered,
Missed,
Outbound,
Hold_Time,
Phone_number,
Phone_number2,
Call_term_reason)
SELECT
c.extension -- USER EXTENSION
, b.STARTTIME -- Start of call
, b.ENDTIME -- End of call
, b.DURATION -- Length of call
, CASE WHEN a.LEGTYPE1 = 2 AND ANSWERED = 1
THEN 1 ELSE 0 END AS Inbound_Answered -- Inbound answered calls
, CASE WHEN a.LEGTYPE1 = 2 and ANSWERED = 0
THEN 1 ELSE 0 END AS Missed -- Missed Calls
, CASE WHEN a.LEGTYPE1 = 1
THEN 1 ELSE 0 END AS Outbound -- Outbound calls
, a.HOLDTIMESECS -- Hold time in seconds
, a.callingpartyno
, a.finallycalledpartyno
, a. TERMINATIONREASONCODE
FROM cdrdb.session a
INNER JOIN cdrdb.callsummary b
ON a.NOTABLECALLID = b.NOTABLECALLID;