Reputation: 61
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
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
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