۲۰-آذر-۱۳۹۱, ۲۱:۴۵:۰۱
سلام
بعضی (توابع،دستورات،روال ها،و قابلیتها) یی در اس کیو ال سرور وجوددارد که دونستنشون میتونه مفید باشه .
تصمیم گرفتم بعضیاشونو اینجا معرفی کنم تا دوستان هم در جریانشون باشن .
اولین مورد :
تولید شماره ردیف ردیفی و گروهی .
که ساختارش به این صورت هست :
کاربرد : برای گذاشتن شماره ردیف برای انتخاب هامون استفاده میشه .
مثال :
مثال 2
و یا میتونیم انتخاب صفحه ای انجام بدیم :
بعضی (توابع،دستورات،روال ها،و قابلیتها) یی در اس کیو ال سرور وجوددارد که دونستنشون میتونه مفید باشه .
تصمیم گرفتم بعضیاشونو اینجا معرفی کنم تا دوستان هم در جریانشون باشن .
اولین مورد :
تولید شماره ردیف ردیفی و گروهی .
کد:
ROW_NUMBER()
کد:
ROW_NUMBER ( )
OVER ( [ PARTITION BY value_expression , ... [ n ] ] order_by_clause )
مثال :
کد:
select ROW_NUMBER ( ) OVER (ORDER BY SalesYTD DESC) as Row ,* from tbl1
کد:
Row FirstName LastName SalesYTD
--- ----------- ---------------------- -----------------
1 Linda Mitchell 4251368.54
2 Jae Pak 4116871.22
3 Michael Blythe 3763178.17
4 Jillian Carson 3189418.36
5 Ranjit Varkey Chudukatil 3121616.32
6 José Saraiva 2604540.71
7 Shu Ito 2458535.61
8 Tsvi Reiter 2315185.61
9 Rachel Valdez 1827066.71
10 Tete Mensa-Annan 1576562.19
11 David Campbell 1573012.93
12 Garrett Vargas 1453719.46
13 Lynn Tsoflias 1421810.92
14 Pamela Ansman-Wolfe 1352577.13
کد:
select ROW_NUMBER ( ) OVER (PARTITION BY TerritoryName ORDER BY SalesYTD DESC) as Row ,* from tbl1
کد:
FirstName LastName TerritoryName SalesYTD Row
--------- -------------------- ------------------ ------------ ---
Lynn Tsoflias Australia 1421810.92 1
José Saraiva Canada 2604540.71 1
Garrett Vargas Canada 1453719.46 2
Jillian Carson Central 3189418.36 1
Ranjit Varkey Chudukatil France 3121616.32 1
Rachel Valdez Germany 1827066.71 1
Michael Blythe Northeast 3763178.17 1
Tete Mensa-Annan Northwest 1576562.19 1
David Campbell Northwest 1573012.93 2
Pamela Ansman-Wolfe Northwest 1352577.13 3
Tsvi Reiter Southeast 2315185.61 1
Linda Mitchell Southwest 4251368.54 1
Shu Ito Southwest 2458535.61 2
Jae Pak United Kingdom 4116871.22 1
کد:
GO
WITH OrderedOrders AS
(
SELECT SalesOrderID, OrderDate,
ROW_NUMBER() OVER (ORDER BY OrderDate) AS RowNumber
FROM Sales.SalesOrderHeader
)
SELECT SalesOrderID, OrderDate, RowNumber
FROM OrderedOrders
WHERE RowNumber BETWEEN 3 AND 8;
کد:
3 Michael Blythe 3763178.17
4 Jillian Carson 3189418.36
5 Ranjit Varkey Chudukatil 3121616.32
6 José Saraiva 2604540.71
7 Shu Ito 2458535.61
8 Tsvi Reiter 2315185.61