1. Trang chủ
  2. » Công Nghệ Thông Tin

Hàm CASE trong SQL Server 2005 (Phần 2) pps

5 325 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 5
Dung lượng 135,23 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Hàm CASE trong SQL Server 2005 Phần 2 Trong phần 1 của loạt bài này chúng tôi đã giải thích các sử dụng hàm CASE đơn giản trong truy vấn.. Trong phần II này, chúng tôi sẽ tiếp tục thảo l

Trang 1

Hàm CASE trong SQL Server 2005 (Phần 2)

Trong phần 1 của loạt bài này chúng tôi đã giải thích các sử dụng hàm CASE đơn giản trong truy vấn Trong phần II này, chúng tôi sẽ tiếp tục thảo luận về cách sử dụng hàm CASE trong một số trường hợp khác

Phương thức 4: Sử dụng hàm CASE trong tìm kiếm

Giả sử chúng ta có bảng sau

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)

Trang 2

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

Và giờ muốn tạo thêm một cột Tax (thuế) dựa trên mức lương như sau

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

Hàm này sẽ cho kết quả:

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

Trang 3

7 MarthaMcgrath 400000.00 112000.000000

8 HenryFayol 75000.00 21000.000000

9 DickWatson 91000.00 25480.000000

10 HelenFoster 124000.00 34720.000000

Phương thức 5: Sử dụng hàm CASE trong mệnh đề ORDER BY

Giả sử chúng ta có bảng dưới trong 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)

Trang 4

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

Để truy vấn tất cả các giá trị trong bảng ta sử dụng hàm truy vấn dưới: Select * from Books

Hàm này sẽ cho kết quả như hình dưới

Giả sử chúng ta muốn hiển thị toàn bộ số sách theo thứ tự các bang: đầu tiên là NY, sau đó là CA, NJ, CT và FL

Bạn có thể thực hiện được điều này bằng cách sử dụng hàm CASE như dưới đây:

Trang 5

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

Hàm này sẽ cho kết quả như sau:

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

Kết luận

Trong phần một và phần hai của loạt bài này, chúng tôi đã hướng dẫn

cách sử dụng các hàm CASE trong SQL Server Trong phần tiếp theo,

chúng ta sẽ xem xét cách sử dụng hàm CASE trong mệnh đề GROUP BY

Ngày đăng: 11/07/2014, 16:20