SQL Server 在 取 料 是 用 的方式, 所以使用者 用 Order 子句 做 料排列, 在 篇文章 中咱叨要 一步介 按怎使用 Case 做 的排列
Order By 子句
咱先 看 一般使用 Select 的 果, 在 篇文章的例咱 使用 SQL Server 的北 料 , 打 Query Analyzer, 行
Use Northwind
Go
Select CompanyName, ContactName, ContactTitle
From Customers
行的 果可能是按照 料 入的 排列, 哪是你要照自己的 排, 你叨需要用到 Order By 子句, 譬如 前一 例, 你哪是要照公司名 排叨要按呢做
Select CompanyName, ContactName, ContactTitle
From Customers
Order By CompanyName
Case 述
Case 述 用 控制程式的流向, 所以咱叨要利用 Case 述 做 T-SQL 的 控制, 看 Case 的 法
Case <input expression>
When <when expression> Then <result expression>
[...n]
[Else <result expression>]
光看 法不 , 在用一 例 一下, 同款地咱 是用北 料 , 假 咱 要 (Employees) 料表中的英文 呼改做台 式, 可以按呢做
select FirstName, TitleOfCourtesy, CourtesyInTC =
Case TitleOfCourtesy
When 'Ms.' Then '水姑娘'
When 'Dr.' Then '博士博'
When 'Mr.' Then '先仔'
When 'Mrs.' Then '女士'
Else '先生/小姐'
End
From employees
排列
了解了基本 法後咱 就可以 始 按怎利用 Order By 加上 Case 述 做 的 料排列
Declare @OrderKey TinyInt
Set @OrderKey = 2
Select CompanyName, ContactName, ContactTitle
From Customers
Order By Case
When @OrderKey = 1 Then CompanyName
When @OrderKey = 2 Then ContactName
Else ContactTitle
End
不 像 不太 用, 至少在 ASP 中, 所以接下 咱 做一 程序
Create Procedure sp_SelectCustomersDynamicOrder
@OrderKey = Null
As
Select CompanyName, ContactName, ContactTitle
From Customers
Order By Case
When @OrderKey = 1 Then CompanyName
When @OrderKey = 2 Then ContactName
Else ContactTitle
End
在你就可以在直接呼叫 Stored Procedure
exec sp_SelectCustomersDynamicOrder
exec sp_SelectCustomersDynamicOrder 1
exec sp_SelectCustomersDynamicOrder 2
按呢是不是友善多了
希望 篇文章 你有 助!