update [dbo].[student] set marks = case when marks > 60 then 'Good' when marks >= 40 and marks <= 60 then 'Okay' when marks < 40 then 'Fail' end --where marks in (60, 40) select * from student
I already have a table with some sample data. When I execute this I get: Error converting data type varchar to numeric.
Advertisement
Answer
Aside from the issue you have of trying to update the same column you are comparing with using a string data type, what you should probably consider is either putting this logic in a view, or you could add a computed / generated column.
The syntax might vary [slightly] depending on your RDBMS.
Alter table dbo.Student add [column] Results as case when marks > 60 then 'Good' when marks >= 40 and marks <= 60 then 'Okay' else 'Fail' end