Vous essayez d'utiliser des instructions CASE sur une jointure interne et tout ce que je reçois, ce sont des erreurs de syntaxe, quelqu'un a-t-il des conseils à ce sujet?
Voici le code
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
C'est la première fois que je travaille même avec des déclarations de cas et encore moins en les combinant avec une jointure interne, donc je suis désolé si je me suis complètement trompé.
Les erreurs de syntaxe que j'obtiens sont:
Syntaxe incorrecte sur = et QUAND ici
THEN Call_Type_ID = 10
WHEN
Et une syntaxe incorrecte attend la CONVERSION sur le GROUP BY
Il semble que vous essayiez de créer des clauses Where dans le cas, mais vous devriez plutôt comparer le résultat du cas avec Call_Type_ID (ou tout autre champ que vous voulez) comme dans l'exemple que j'ai écrit ci-dessous J'espère que cela aide!
Parfois aussi, j'utilise des crochets sur mon boîtier pour voir plus facilement où ils commencent et s'arrêtent.
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.