您的位置:首页技术开发数据库技巧 → 利用Case敘述做SQL的動態排列

利用Case敘述做SQL的動態排列

时间:2004/12/2 0:57:00来源:本站整理作者:蓝点我要评论(0)

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

When Then

[...n]

[Else ]



光看語法不夠, 現在用一個例來學練一下, 同款地咱還是用北風資料庫, 假設咱們要將職員 (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



按呢是不是友善多了



希望這篇文章對你有幫助!








相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 没有查询到任何记录。

最新文章 mssql企业管理器不能打 Oracle PRKC-1002错误原因和解决方案SQL SERVER数据库日志清空图文教程win2003计算机改名后sql server 2005 本地复DB2错误信息码大全

人气排行 彻底解决mysql中文乱码的办法mysql数据库root密码忘记的修改方法SQL SERVER数据库日志清空图文教程.bak备份文件如何恢复Oracle PRKC-1002错误原因和解决方案Oracle错误代码大全如何将txt的文本数据导入SQL server 2005呢DB2错误信息码大全