2013-04-03 8 views
11

内部結合でCASEステートメントを使用しようとしていますが、構文エラーが発生しています。ここでINNERのケースステートメント

コード

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 

これは私がしても、内側には私は完全に台無しにしている場合ので、私は申し訳ありません参加して、それらを組み合わせることはおろかcase文で働いてきたの初めてですです。

構文エラーを取得しているイム:

答えて

19

BY

正しくない=の構文とWHENここGROUPの転換を期待し

THEN Call_Type_ID = 10 
WHEN 

、誤った構文をあなたがしようとしているように思えますケースでWhere-clausesを作成しますが、代わりに、ケースの結果を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. 
+0

私はまったく正しいと思っています。アドバイスありがとう –

-3
select * from emp; 
select * from dept; 

........................................インナーはemp.deptno=dept.deptno ;

にDEPTに参加EMPから

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 

を...................................

............................................... .................................

私はここで考えていますデフォルト表ではOracleとして扱います。

関連する問題