In-line If-Else Block?

Please support our MS SQL advertiser: Intel Parallel Studio Home
Reply

Join Date: Apr 2006
Posts: 3
Reputation: versatilewt is an unknown quantity at this point 
Solved Threads: 0
versatilewt versatilewt is offline Offline
Newbie Poster

In-line If-Else Block?

 
0
  #1
Apr 20th, 2006
Hi,

I'm writing some complex queries on a very poorly designed database. We're running on MS SQL Server2000. I was wondering if its possible to do in-line if-else blocks within a query.. i.e.

[PHP]
SELECT *
FROM tablename
IF (condition1 = 'a')
WHERE condition2 = 'a'
ELSE
WHERE condition2 = 'b'
[/PHP]
Reply With Quote Quick reply to this message  
Join Date: Jul 2005
Posts: 483
Reputation: campkev is an unknown quantity at this point 
Solved Threads: 19
campkev campkev is offline Offline
Posting Pro in Training

Re: In-line If-Else Block?

 
0
  #2
Apr 20th, 2006
yes. There are a couple of different ways depending on how your database is setup and what you are trying to do with your query. Here are a couple of examples. Mess with them and let me know if you need more help.
Example A (get customer or deleted customer):
  1. CREATE proc sp_generic (@cust int, @type int)
  2. IF @type = 1
  3. SELECT * FROM customer WHERE customerid = @cust
  4. else
  5. SELECT * FROM deleted_customers WHERE customerid = @cust
Example B get just one department or all departments:
  1. CREATE proc sp_generic (@deptid int )
  2.  
  3. SELECT * FROM employees WHERE departmentid = case when @dept >0 then @dept else departmentid end
  4. ORDER BY departmentid
Reply With Quote Quick reply to this message  
Join Date: Apr 2006
Posts: 3
Reputation: versatilewt is an unknown quantity at this point 
Solved Threads: 0
versatilewt versatilewt is offline Offline
Newbie Poster

Re: In-line If-Else Block?

 
0
  #3
Apr 20th, 2006
Thanks for the reply. I don't have access to create procedures on the system, though I probably should. I think I over simplified my question a bit. Here's exactly what I'm trying to do. I want to set WHERE conditions optionally, based on a subquery.

The data isn't given explicity, so I have to kind of infer it through the query. I want to set a where condition of e.stafflevelid = m.stafflevelid and project_dept = manager_dept ONLY when then Manager level is, say 4 (which is determined from a subquery).

So, for the query
[php]

WHERE
e.active <> 0
AND
/* THIS IS THE OPTIONAL WHERE CONDITION */
/* IF THE MANAGER'S STAFF LEVEL SATISFIES SUBQUERY*/
(mgr.stafflevelid IN (/* HERE WOULD BE SUBQUERY*/)
/* THEN SET THESE WHERE CONDITIONS*/
e.stafflevelid=m.stafflevelid
p.dept = m.dept)
[/php]

And, I want this condition to run with other WHERE statements

I know it's not pretty, but I'm working with bad structure. Hopefully this isn't too confusing.

Thanks,

Brian
Reply With Quote Quick reply to this message  
Join Date: Jul 2005
Posts: 483
Reputation: campkev is an unknown quantity at this point 
Solved Threads: 19
campkev campkev is offline Offline
Posting Pro in Training

Re: In-line If-Else Block?

 
0
  #4
Apr 20th, 2006
still not sure I understand fully what you want but maybe this will help
  1. IF (mgr.stafflevelid IN (/* HERE WOULD BE SUBQUERY*/)
  2. SELECT [COLUMNS] FROM [TABLES] WHERE e.active <> 0 AND e.stafflevelid=m.stafflevelid AND p.dept = m.dept)
  3. else
  4. SELECT [COLUMNS] FROM [TABLES] WHERE e.active <> 0
Reply With Quote Quick reply to this message  
Join Date: Aug 2005
Posts: 6
Reputation: eralper is an unknown quantity at this point 
Solved Threads: 2
eralper eralper is offline Offline
Newbie Poster

Re: In-line If-Else Block?

 
0
  #5
May 10th, 2006
Hi,

I hope the below script may help you.


WHERE
CASE
WHEN Code LIKE 'A%' THEN OrderNumber
ELSE 10
END = 20
OR
CASE
WHEN Code LIKE 'E%' THEN OrderNumber
ELSE 10
END = 6


The below checks whether OrderNumber equals to 20 where Code begins with 'A'

CASE
WHEN Code LIKE 'A%' THEN OrderNumber
ELSE 10
END = 20

The second parts checks whether OrderNumber equals to 6 where Code begins with 'E'


Eralper
http://www.kodyaz.com
Reply With Quote Quick reply to this message  
Reply

This thread is more than three months old.
Perhaps start a new thread instead?
Message:


Thread Tools Search this Thread



Tag cloud for MS SQL
About Us | Contact Us | Advertise | DaniWeb | Acceptable Use Policy | RSS Feed

©2003 - 2009 DaniWeb® LLC