Vasilli Soviet
Vasilli Soviet

Reputation: 61

Why my case statement throws error , incorrect syntax near '='?

why my case statement throws this error:

Msg 102, Level 15, State 1, Line 2 Incorrect syntax near '='.

Code:

Create PROCEDURE [dbo].[Chart_SelectSmsComplaintsValidity]

 @FromDate datetime,
 @ToDate datetime

AS
BEGIN

    Select COUNT(ReceivedMessages.ID) As ReceivedMessageID, 
    CASE ReceivedMessages.IsComplaint WHEN ReceivedMessages.IsComplaint=0 
    THEN 'Incomplete'
    WHEN ReceivedMessages.IsComplaint=1 THEN 'Complete'
    WHEN ReceivedMessages.IsComplaint=-3 THEN 'Inappropriate' END from ReceivedMessages 

    where ReceivedMessages.ReceivedDateTime >= @FromDate AND ReceivedMessages.ReceivedDateTime <= @ToDate
    Group By ReceivedMessages.IsComplaint




END

Upvotes: 0

Views: 5320

Answers (2)

D Stanley
D Stanley

Reputation: 152521

You're combining two different forms of the CASE statement. You can simplify it this way since you're comparing the same expression in each case:

CASE ReceivedMessages.IsComplaint
  WHEN 0  THEN 'Incomplete'
  WHEN 1  THEN 'Complete'
  WHEN -3 THEN 'Inappropriate' 
END from ReceivedMessages 

The alternative would be:

CASE
  WHEN ReceivedMessages.IsComplaint=0  THEN 'Incomplete'
  WHEN ReceivedMessages.IsComplaint=1  THEN 'Complete'
  WHEN ReceivedMessages.IsComplaint=-3 THEN 'Inappropriate' 
END

Upvotes: 4

radar
radar

Reputation: 13425

The error is in this line

CASE ReceivedMessages.IsComplaint WHEN ReceivedMessages.IsComplaint=0 

it should be like this

CASE WHEN ReceivedMessages.IsComplaint=0 THEN 'Incomplete'
WHEN ReceivedMessages.IsComplaint=1 THEN 'Complete'
WHEN ReceivedMessages.IsComplaint=-3 THEN 'Inappropriate' END

Upvotes: 1

Related Questions