-- ROW_NUMBER() -- 依照指定的欄位「排序」,逐筆加上序號,例: -- SerialNo Field_Name -- 1 ab -- 2 ab -- 3 cd -- 4 ef SELECT ROW_NUMBER() OVER( ORDER BY [Field_Name]) AS SerialNo, * FROM [Table_Name] -- RANK() -- 依照指定的欄位「排名」,遇到不同資料時將以「該筆序號」為新排名,例: -- SerialNo Field_Name -- 1 ab -- 1 ab -- 3 cd -- 4 ef SELECT RANK() OVER( ORDER BY [Field_Name]) AS SerialNo, * FROM [Table_Name] -- DENSE_RANK() -- 依照指定的欄位「排名」,遇到不同資料時將以「下一排名」為新排名,例: -- SerialNo Field_Name -- 1 ab -- 1 ab -- 2 cd -- 3 ef SELECT DENSE_RANK() OVER( ORDER BY [Field_Name]) AS SerialNo, * FROM [Table_Name]
目前分類:T-SQL (5)
- May 24 Fri 2013 16:48
[T-SQL] 幫查詢的結果加上序號或排名
- May 09 Thu 2013 13:47
[T-SQL] 重新命名 Table Name 與 Column Name
-- 修改 Table 欄位名稱,自行修改前 2 個 '' 中的資料,最後的 'COLUMN' 保留不變 EXEC sp_rename 'Table_Name.Old_Column_Name', 'New_Column_Name', 'COLUMN' -- 修改 Table 名稱 EXEC sp_rename 'Old_Table_Name' , 'New_Table_Name'
- Feb 21 Thu 2013 14:57
[T-SQL] Transaction 用法
Transaction(交易,大陸譯名:事务)
將多個資料庫操作的 SQL 指令 group 成一個執行的單元區塊( a single execution unit ),以特定的字串( Begin Transaction )來標記交易開始,一個交易可能包括了多個資料庫操作指令來完成,交易結束時的動作有兩個,若所有的操作全部執行成功,交易才算成功並提交變更( Commit Transaction ),若當中有發生錯誤失敗,則整個交易宣告失敗並回復所有變更( Rollback Transaction )。
例:
DECLARE @chk tinyint SET @chk = 0 Begin Transaction [Trans_Name] -- Trans_Name 交易名稱可自訂或者是不寫 -- 可編寫多個 SQL 指令 INSERT INTO [Table_Name] VALUES( 'Field_Value_1' ); IF @@Error <> 0 BEGIN SET @chk = 1 END INSERT INTO [Table_Name] VALUES( 'Field_Value_2' ); IF @@Error <> 0 BEGIN SET @chk = 1 END IF @chk <> 0 BEGIN -- 若是新增資料發生錯誤 Rollback Transaction [Trans_Name] -- 復原所有操作所造成的變更 END ELSE BEGIN Commit Transaction [Trans_Name] -- 提交所有操作所造成的變更 END
參考資料:
http://www.codeproject.com/Articles/4451/SQL-Server-Transactions-and-Error-Handling
- Feb 20 Wed 2013 16:35
[T-SQL] @@Error 與 @@RowCount
@@Error 回傳最近一次 SQL 執行結果的錯誤代碼,若成功執行,則回傳 0
Returns the error number for the last Transact-SQL statement executed.
Returns 0 if the previous Transact-SQL statement encountered no errors.
@@RowCount 回傳最近一次 SQL 執行結果影響的資料列筆數
Returns the number of rows affected by the last statement.
- Feb 19 Tue 2013 10:17
[T-SQL] 判斷 Table 是否存在
-- 判斷 Table 是否存在 IF EXISTS( SELECT * FROM sys.tables WHERE name = 'Table_Name' ) SELECT * FROM [Table_Name] -- 暫存表,# 表示本地暫存,## 表示全局暫存 IF OBJECT_ID('tempdb.dbo.#Table_Name') IS NOT NULL DROP TABLE [#Table_Name]