2012年8月14日 星期二

跟SQL有關的

記錄用過的SQL語法:
  • 將日期轉換成星期。
'星期別'=(datepart(weekday,售票日期)-1)

備註:製作年曆檔時用到的。


  • 換成中文星期:
'星期別'=
CASE (datepart(weekday,[日期欄位])-1)
WHEN 1 THEN '一'
WHEN 2 THEN '二'
WHEN 3 THEN '三'
WHEN 4 THEN '四'
WHEN 5 THEN '五'
WHEN 6 THEN '六'
ELSE '日' END)

備註:製作年曆檔時用到的。


  • 取整數:傳回不含小數、不大於其引數值的最大數字。
SELECT FLOOR(123.45), FLOOR(-123.45), FLOOR($123.45)


  • 無條件進整:傳回大於或等於指定數值運算式的最小整數。
SELECT CEILING($123.45), CEILING($-123.45), CEILING($0.0)

  • 四捨五入:傳回最接近引數且去掉小數部份的數字。
ROUND([數值],[四捨五入位數])
SELECT ROUND(100.05,-2)


  • ROW_Number():傳回結果集資料分割內某資料列的序號,序號從 1 開始,每個資料分割第一個資料列的序號是 1。

SELECT *
      ,ROW_Number() OVER (Order By [任一欄位])
  FROM FIM01

備註:
在欄位內填入數值,由一開始。
搭配寫檔時,可以作為流水號。
在分頁時,可以做為分頁的依據。


  • 重新虛擬一個新的資料表的方法
方法一:

WITH [New Table Name] AS ( 撈取出來的資料表)
Select * from [New Table Name] where …

with方法,只能夠虛擬一個,若是有兩個with會互相牴觸,無法執行。

方法二:

SELECT *
  FROM (SELECT * FROM FIM01 WHERE 單位代號='10') [T1]
 WHERE TICKET > 20

這個方法應用比較不受限制,可以取出多個資料表,再彙整成一個新的資料表。

沒有留言:

張貼留言