2017-03-10 1 views
0

Ich versuche, diese Abfrage mit Simba ODBC SFDC-Treiber auszuführen, aber das Protokoll zeigt mir einen Fehler in der Nähe der case-Anweisung. Ich bin nicht völlig davon überzeugt, dass es ein Fehler mit der CASE-Anweisung ist, aber ich sehe nicht, wo mein Fehler ist. Jemand bitte helfen !!!!SQL Query Error mit CASE-Anweisung?

SELECT 
    Account_Group__c, 
    Hospital_Sales_Teammate__c, 
    Name, 
    StageName, 
    CloseDate, 
    Yr_Credited__c, 
    Probability, 
    Census__c, 
    Credit__c, 
    Related_VSA__c, 
    AB_Hospital_Relationship_Type__c, 

CASE 
    WHEN Age_In_Stage__c >0 and Age_In_Stage__c <= 30 THEN '<30' 
    WHEN Age_In_Stage__c >30 and Age_In_Stage__c <= 60 THEN '31-60' 
    WHEN Age_In_Stage__c >60 and Age_In_Stage__c <= 90 THEN '61-90' 
     ELSE '>90' END AS Age_Bucket, 

CASE 
    WHEN (Type = "Existing Business - Renewal" OR Type = 'Existing Business - Amendment') 
     AND (Account_HHV_Segment__c='A' OR Account_HHV_Segment__c='B') 
     AND AB_Hospital_Relationship_Type__c<>'N/A' 
     AND (RecordType='PWuAAM' 
     OR RecordType='01250000000DcJkAAK' 
     OR RecordType='01250000000DpV4AAK' 
     OR RecordType='01250000000Dxd7AAC' 
     OR RecordType='01250000000DoFPAA0' 
     OR RecordType='01250000000DuuEAAS') THEN 'Hosp' 
    WHEN Name LIKE '%AB Hospital Loss%' THEN 'Hosp' 
     ELSE '' END AS Hospital_Eligible, 

CASE 
    WHEN RecordType='01250000000DpV4AAK' 
     AND Type LIKE '%Acquisition%' 
    THEN 'Acq' 
     ELSE '' END AS Acquisition_Eligible, 

CASE 
    WHEN RecordType='01250000000Dxd7AAC' 
     AND (Business_Unit__c="Full Conversion" OR Business_Unit__c="Partial Conversion") 
    THEN 'BGC' 
     ELSE '' END AS Conversion_Eligible, 

CASE 
    WHEN RecordType='01250000000DuuEAAS' 
     AND Type_of_Agreement__c ="MDA" OR Type_of_Agreement__c ="Joinder" OR Type_of_Agreement__c ="JV" 
    THEN 'Incr Doc' 
     ELSE '' END AS Incr_Doc_Eligible 

FROM 
Opportunity 

WHERE 
    Eligible__c<>'No' 
AND NOT Name LIKE '%test%' 
AND NOT Name LIKE '%Test%' 
AND NOT Name LIKE '%TEST%' 

ORDER BY 
Account_Group__c ASC 
+0

Was ist der Fehler? –

Antwort

1

Business_Unit__c="Full Conversion" (und an anderen Orten als auch): Sie verwenden doppelte Anführungszeichen statt einfacher Anführungszeichen (wie Sie in dem Rest der Abfrage tun). Ich wette, das ist das Problem ...

Auch dies ist ein Fall Ausdruck, keine Aussage.

+0

Guter Punkt. Ich habe die doppelten Anführungszeichen entfernt und den Fehler immer noch beim ersten Case-Ausdruck platziert. Das Problem mit Simba ist, dass es Ihnen nicht GENAU sagt, wo oder was der Fehler ist - nur dass es einen Fehler in der allgemeinen Umgebung gibt. Gedanken? – sqlbg

+0

Wenn 'Age_In_Stage__c' keine Ganzzahl ist, sehe ich gerade keinen anderen Fehler. Ich würde vorschlagen, Case-Ausdrücke zu entfernen, bis Sie den Fehler nicht mehr haben. Als Sie wissen, wo der Fehler ist, vielleicht als Sie _what_ finden können der Fehler ist – HoneyBadger

-1

Versuchen Sie dies, um Fehler zu erfassen.

BEGIN TRY 
    -- RAISERROR with severity 11-18 will cause execution to 
    -- jump to the CATCH block. 
    --RAISERROR ('Error raised in TRY block.', -- Message text. 
    --   16, -- Severity. 
    --   1 -- State. 
    --   ); 


SELECT 
    Account_Group__c, 
    Hospital_Sales_Teammate__c, 
    Name, 
    StageName, 
    CloseDate, 
    Yr_Credited__c, 
    Probability, 
    Census__c, 
    Credit__c, 
    Related_VSA__c, 
    AB_Hospital_Relationship_Type__c, 

CASE 
    WHEN Age_In_Stage__c >0 and Age_In_Stage__c <= 30 THEN '<30' 
    WHEN Age_In_Stage__c >30 and Age_In_Stage__c <= 60 THEN '31-60' 
    WHEN Age_In_Stage__c >60 and Age_In_Stage__c <= 90 THEN '61-90' 
     ELSE '>90' END AS Age_Bucket, 

CASE 
    WHEN (Type = "Existing Business - Renewal" OR Type = 'Existing Business - Amendment') 
     AND (Account_HHV_Segment__c='A' OR Account_HHV_Segment__c='B') 
     AND AB_Hospital_Relationship_Type__c<>'N/A' 
     AND (RecordType='PWuAAM' 
     OR RecordType='01250000000DcJkAAK' 
     OR RecordType='01250000000DpV4AAK' 
     OR RecordType='01250000000Dxd7AAC' 
     OR RecordType='01250000000DoFPAA0' 
     OR RecordType='01250000000DuuEAAS') THEN 'Hosp' 
    WHEN Name LIKE '%AB Hospital Loss%' THEN 'Hosp' 
     ELSE '' END AS Hospital_Eligible, 

CASE 
    WHEN RecordType='01250000000DpV4AAK' 
     AND Type LIKE '%Acquisition%' 
    THEN 'Acq' 
     ELSE '' END AS Acquisition_Eligible, 

CASE 
    WHEN RecordType='01250000000Dxd7AAC' 
     AND (Business_Unit__c="Full Conversion" OR Business_Unit__c="Partial Conversion") 
    THEN 'BGC' 
     ELSE '' END AS Conversion_Eligible, 

CASE 
    WHEN RecordType='01250000000DuuEAAS' 
     AND Type_of_Agreement__c ="MDA" OR Type_of_Agreement__c ="Joinder" OR Type_of_Agreement__c ="JV" 
    THEN 'Incr Doc' 
     ELSE '' END AS Incr_Doc_Eligible 

FROM 
Opportunity 

WHERE 
    Eligible__c<>'No' 
AND NOT Name LIKE '%test%' 
AND NOT Name LIKE '%Test%' 
AND NOT Name LIKE '%TEST%' 

ORDER BY 
Account_Group__c ASC 

END TRY 
BEGIN CATCH 
    DECLARE @ErrorMessage NVARCHAR(4000); 
    DECLARE @ErrorSeverity INT; 
    DECLARE @ErrorState INT; 

    SET @ErrorMessage = ERROR_MESSAGE(); 
    SET @ErrorSeverity = ERROR_SEVERITY(); 
    SET @ErrorState = ERROR_STATE(); 

    -- Use RAISERROR inside the CATCH block to return error 
    -- information about the original error that caused 
    -- execution to jump to the CATCH block. 
    RAISERROR (@ErrorMessage, -- Message text. 
       @ErrorSeverity, -- Severity. 
       @ErrorState -- State. 
       ); 
END CATCH; 
+0

Dies ist nicht wirklich eine Lösung, obwohl – HoneyBadger

+0

und Simba SFDC-Treiber unterstützt BEGIN TRY – sqlbg

0

Warum verwenden Sie doppelte Anführungszeichen?

(Type = "Existing Business - Renewal" OR Type = 'Existing Business - Amendment')

Sie sollten es ändern zu

(Type = 'Existing Business - Renewal' OR Type = 'Existing Business - Amendment') 
+0

Ich habe die Anführungszeichen entfernt und es immer noch platzieren der Fehler beim Ausdruck des ersten Falls. Das Problem mit Simba ist, dass es Ihnen nicht GENAU sagt, wo oder was der Fehler ist - nur dass es einen Fehler in der allgemeinen Umgebung gibt. – sqlbg