2013-04-03 6 views
11

एक आंतरिक शामिल होने पर केस विवरणों का उपयोग करने का प्रयास कर रहा है और जो कुछ भी मुझे मिल रहा है वह वाक्यविन्यास त्रुटियां है, किसी को भी इस पर कोई सलाह मिली है?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 

यह पहली बार मैं भी अकेला उन्हें एक आंतरिक के साथ संयोजन दें मामले बयान के साथ काम किया है में शामिल होने के तो मैं माफी चाहता हूँ अगर मैं पूरी तरह से में गड़बड़ कर दिया है है।

वाक्यविन्यास त्रुटियों im हो रही हैं:

= पर गलत वाक्य रचना और जब यहाँ

THEN Call_Type_ID = 10 
WHEN 

और गलत वाक्यविन्यास ग्रुप पर परिवर्तन की उम्मीद द्वारा

उत्तर

19

ऐसा लगता है कि आप की कोशिश कर रहे मामले में कहां क्लॉज बनाएं, लेकिन इसके बजाय आपको कॉल_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 ;

पर विभाग में शामिल होने ...................................

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 

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

मैं यहां विचार कर रहा हूं डिफ़ॉल्ट तालिका द्वारा ऑरैकल के रूप में खून।

संबंधित मुद्दे