7
Sep

Part I of this series illustrated how to use simple case functions in queries. In Part II of the series, I am going to discuss how to use case functions in different types of scenarios.

Method 4: Usage of searched case function

Let us assume that we have the following table.

use tempdb
go
if exists (select * from dbo.sysobjects
 where id = object_id(N'[emp]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [emp]
GO
create table Emp
 (id int, [First name] varchar(50), [Last name] varchar(50), Salary money)
go
insert into Emp (id,[First name],[Last name], salary )
 values (1,'John','Smith',120000)
insert into Emp (id,[First name],[Last name], salary )
 values (2,'James','Bond',95000)
insert into Emp (id,[First name],[Last name], salary )
 values (3,'Alexa','Mantena',200000)
insert into Emp (id,[First name],[Last name], salary )
 values (4,'Shui','Qui',36000)
insert into Emp (id,[First name],[Last name], salary )
 values (5,'William','Hsu',39000)
insert into Emp (id,[First name],[Last name], salary )
 values (6,'Danielle','Stewart',50000)
insert into Emp (id,[First name],[Last name], salary )
 values (7,'Martha','Mcgrath',400000)
insert into Emp (id,[First name],[Last name], salary )
 values (8,'Henry','Fayol',75000)

insert into Emp (id,[First name],[Last name], salary )
 values (9,'Dick','Watson',91000)
insert into Emp (id,[First name],[Last name], salary )
 values (10,'Helen','Foster',124000)
go

Let us assume that want to create a column, Tax, on the fly, based on the salary range.

Select [id],[Full Name]=[First name]+ [Last name],Salary,Tax = case
 When  salary between 0 and 36000 then Salary*.24
 When  salary between 36000 and 450000 then Salary*.28
 When  salary between 45000 and 75000 then Salary *.30
 When  salary between 75000 and 150000 then Salary *.32
 else Salary*.40 end
from Emp

This would produce the following result:

id          Full Name          Salary                Tax
----------- -------------------------------- ---------------------
1           JohnSmith         120000.00             33600.000000
2           JamesBond          95000.00             26600.000000
3           AlexaMantena      200000.00             56000.000000
4           ShuiQui            36000.00              8640.000000
5           WilliamHsu         39000.00             10920.000000
6           DanielleStewart    50000.00             14000.000000
7           MarthaMcgrath     400000.00            112000.000000
8           HenryFayol         75000.00             21000.000000
9           DickWatson         91000.00             25480.000000
10          HelenFoster       124000.00             34720.000000

Method 5: Usage case function in an ORDER by clause

Let us assume that we have the following table in Books.

use tempdb
go
if exists (select * from dbo.sysobjects where id = object_id(N'[Books]') and
 OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [Books]
GO
create table Books
 (Bookid int, Title varchar(100), Authorname varchar(100), state char(2))
go
insert into Books (Bookid, Title, Authorname, state)
  values (1, 'The Third Eye','Lobsang Rampa','CA')
insert into Books (Bookid, Title, Authorname, state)
  values (2, 'Service Oriented Architecture For Dummies', 'Judith Hurwitz','NJ')
insert into Books (Bookid, Title, Authorname, state)
  values (3, 'Business Reference for Students and Professionals','Ray Myers','NY')
insert into Books (Bookid, Title, Authorname, state)
  values (4, 'More Java Gems','Dwight Deugo', 'FL')
insert into Books (Bookid, Title, Authorname, state)
  values (5, 'Six Sigma Workbook For Dummies','Craig Gygi','FL')
insert into Books (Bookid, Title, Authorname, state)
  values (6, 'Performance Appraisals: How to Achieve Top Results',
  'Priscilla A. Glidden', 'NC' )
insert into Books (Bookid, Title, Authorname, state)
  values (7, 'Talent Management: From Competencies to Organizational Performance',
  'John Smith','FL')
insert into Books (Bookid, Title, Authorname, state)
  values (8, 'Using Unix','Howard Johnson','CT')
insert into Books (Bookid, Title, Authorname, state)
  values (9, 'Mastering Oracle','Erina Zolotrova','CT')
insert into Books (Bookid, Title, Authorname, state)
  values (10, 'How to become CEO','Olga Zohaskov','NY')
go

Let us query all the values from the table, using the query below.

Select * from Books

This would produce the following result. Refer Fig 1.0

wits_caseFunction2_image001

Let us assume that we want to display all of the books that are printed in NY first, then CA, then NJ and then CT and FL respectively.

This could be achieved using the CASE function as follows:

select Title, Authorname, state from Books order by case
 when state ='NY' then 1
 when state ='CA' then 2
 when state ='NJ' then 3
 when state ='CT' then 4
 when state ='FL' then 5 else 6 end

This would produce the result, shown below.

Title                                                                Authorname            state
------------------------------------------------------------------ ----------------------- -----
Business Reference for Students and Professionals                    Ray Myers                NY
How to become CEO                                                    Olga Zohaskov            NY
The Third Eye                                                        Lobsang Rampa            CA
Service Oriented Architecture For Dummies                            Judith Hurwitz           NJ
Using Unix                                                           Howard Johnson           CT
Mastering Oracle                                                     Erina Zolotrova          CT
More Java Gems                                                       Dwight Deugo             FL
Six Sigma Workbook For Dummies                                       Craig Gygi               FL
Talent Management: From Competencies to Organizational Per           John Smith               FL
Performance Appraisals: How to Achieve Top Results                   Priscilla A. Glidden     NC

Conclusion

Part I and part II of this series has illustrated the usage of case functions in SQL Server.


VN:F [1.7.4_987]
Rating: 0.0/5 (0 votes cast)
VN:F [1.7.4_987]
Rating: 0 (from 0 votes)

This entry was posted on Monday, September 7th, 2009 at 4:48 am and is filed under SQL Server. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or TrackBack URI from your own site.

2 Responses so far to "CASE function in SQL Server 2005 – part II"

  1. 1 CASE function in SQL Server 2005 – part I
    September 7th, 2009 at 4:50 am  

    [...] Click to See all articals… This entry was posted on Monday, September 7th, 2009 at 4:43 am and is filed under SQL Server. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or TrackBack URI from your own site. [...]

  2. 2 Collection of Source Code « Wits Square
    October 22nd, 2009 at 5:32 am  

    [...] CASE function in SQL Server 2005 – part II Part I of this series illustrated how to use simple case functions in queries. In Part II of the series, I am going to discuss how to use case functions in different types of scenarios. Method 4: Usage of searched case function Let us assume that we have the following table. use tempdb go if … [...]

Leave a reply

Name (*)
Mail (*)
URI
Comment