根据另一个表中的值插入值

时间:2017-09-12 14:53:52

标签: mysql sql

我担心我的'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;

0 个答案:

没有答案