標籤:
Sql Server API學習SqlServer
次序函數NTILE
文法:
NTILE (integer_expression) OVER ( [ <partition_by_clause> ] < order_by_clause > )
return: bigint
PS:如果總行數不能夠補integer_expression整除,按照 OVER 子句指定的順序,較大的組排在較小的組前面。例如:53分為5組,則前3組為11行,後2組為10行。
將數量為integer_expression的行分為一組,每一組具有各自的編號,組編號從1開始。
A:將行分為組
- 1SELECT p.FirstName, p.LastName
- 2 ,NTILE(4) OVER(ORDER BY s.SalesYTD DESC) AS Quartile
- 3 ,CONVERT(nvarchar(20),s.SalesYTD,1) AS SalesYTD
- 4 ,a.PostalCode
- 5FROM Sales.SalesPerson AS s
- 6INNER JOIN Person.Person AS p
- 7 ON s.BusinessEntityID = p.BusinessEntityID
- 8INNER JOIN Person.Address AS a
- 9 on a.AddressID = p.BusinessEntityID
- 10WHERE TerritoryID IS NOT null
B:使用PARTITION BY劃分結果集
- 1
運算式COALESCE
按順序計算變數並返回最先不為NULL的第一個運算式的當前值
COALESCE(expression,.......)
PS:如果所有的值都為NULL,則至少返回一個NULL
COALESCE 運算式是 CASE 運算式的文法捷徑。 即查詢最佳化工具將代碼 COALESCE(expression1,...n) 重寫為以下 CASE 運算式:
- 1CASE
- 2 WHEN (expression1 IS NOT NULL) THEN expression1
- 3 WHEN (expression2 IS NOT NULL) THEN expression2
- 4 ...
- 5 ELSE expressionN
- 6END
簡單範例程式碼:
- 1SELECT name, Class, Color, ProductNumber,
- 2 COALESCE(Class,Color,ProductNumber) AS FirstNotNull
- 3FROM Production.Product
IIF
根據ture和false,計算不同的分支運算式
文法:
IIf(Logical_Expression, Expression1 [HINT ], Expression2 [HINT ])
IIf 函數有三個參數:iif(<條件>, <then 分支>, <else 分支>)
- 1
CHOOSE
在 SQL Server 中從值列表返回指定索引處的項。
文法:
CHOOSE ( index, val_1, val_2 [, val_n ] )
參數:
index
一個整數運算式,表示其後的項列表的從 1 開始的索引。如果提供的索引值具有 int 之外的數值資料類型,則該值將隱式轉換為整數。 如果索引值超出了值數組的界限,則 CHOOSE 返回 Null。
val_1 … val_n
任何資料類型的逗號分隔的值列表。
樣本:
- 1SELECT CHOOSE(2,‘test1‘,‘test2‘) AS result
Sql Server API學習