tags:

views:

35

answers:

3

Hello All,

I am facing a problem in executing queries with CASE statement. Based on my condition,(for eg. length), I want to execute different SQL statement.

Problematic sample query is as follows:

select case 
    when char_length('19480821') = 8
        then select count(1) from Patient
    when char_length('19480821')=10
        then select count(1) from Doctor 
end

Exception:

[Error] Script lines: 1-5 --------------------------
Incorrect syntax near the keyword 'select'.
Msg: 156, Level: 15, State: 2
Server: sunsrv4z7, Line: 2

I am not able to correct the syntax. I am getting the string for char_length as input from the user. How can I fire queries based on certain condition? Is CASE the right choice ? Or do I have to use any other thing.

Please advice me the right way.

Thanks in advance

+1  A: 
select 
  case when char_length('19480821')=8 then (select count(1) from Patient)
        when char_length('19480821')=10 then (select count(1) from Doctor)
    end

The problem is that you are missing opening and closing brackets in your nested 'Select' statements :)

VoodooChild
you might want to move the opening parentheses in the second then clause one word right.
potatopeelings
still there is syntax error because in thrid line then is inside bracket
Pranay Rana
thanks, fixed :o
VoodooChild
+1  A: 

Just put opening and closing bracket around select statement resolve you problem

select 
    case when 
        char_length('19480821')=8 then 
            (select count(1) from Patient )
        when 
        char_length('19480821')=10 then 
            (select count(1) from Doctor )
      end
Pranay Rana
+1 lol, beat you to it!!!
VoodooChild
yeah..................
Pranay Rana
A: 

Please do note that it is not a case STATEMENT, it is a case EXPRESSION. By enclosing the queries in parentheses, you are converting them (syntactically) to values.

This is similar in principle to a subquery, such as " select name from Doctor where salary = (select max(salary) from Doctor)"

Phlamingo