Searching...
Sunday, February 16, 2014

PAGING windows in T-SQL

2:45 PM

di SQL Server 2012 ada metode baru untuk mendapatkan beberapa baris data melalui klausa Select sehingga didapatkan jumlah baris data sesuai yang diinginkan sesuai dengan nilai row offset dan row value yang sudah ditentukan sehingga jumlah record yang di presentasikan di client dapat diatur dengan mekanisme paging.
Sebenarnya dalam hal ini kita memanfaatkan kombinasi OFFSET/FETCH NEXT dengan klausa ORDER BY
untuk lebih jelasnya kita langsung praktek aja. Disini saya menggunakan SQL Server 2012 Developer dan databaseAdventureworks2012.
Didalam database AdventureWorks2012 ada table yang bernama Production.Product. untuk melihat seluruh baris data yang ada di table tersebut kita gunakan klausa SELECT dengan mengurutkannya berdasarkan field PRODUCTID.
SELECT ProductID,Name,SafetyStockLevel,ReorderPoint
  FROM [Production].[Product] order by ProductID

T-SQL diatas akan mengembalikan 504 baris data yang berurut berdasarkan field PRODUCTID.
jika kita ingin mendapatkan baris-baris data tersebut berdasarkan urutan data yang sudah ditentukan atau misal kita ingin mendapatkan baris data dimana di setiap PAGE akan dimunculkan 10 baris data dapat dibuat dengan T-SQL berikut :
misalkan N adalah angka PAGE yang diinginkan maka :
declare @N int;
  set @N = 1 ;
  declare @offset_increment int = 10;
  declare @current_offset int = (0 + ((@N-1) * @offset_increment));

SELECT ProductID,Name,SafetyStockLevel,ReorderPoint
  FROM [Production].[Product] order by ProductID
offset
@current_offset rows
fetch next
@offset_increment rows only
go

Contoh T-SQL diatas adalah bagaimana jika kita ingin menampilkan data pada PAGE 1 dengan banyak baris data sebanyak 10 record.
Lalu bagaimana jika ingin memanggil 10 record yang berada pada PAGE 10 ?
yaitu dengan menggunakan T-SQL berikut :
declare @N int;
  set @N = 10 ;
  declare @offset_increment int = 10;
  declare @current_offset int = (0 + ((@N-1) * @offset_increment));

SELECT ProductID,Name,SafetyStockLevel,ReorderPoint
  FROM [Production].[Product] order by ProductID
offset
@current_offset rows
fetch next
@offset_increment rows only
go

data yang ditampilkan akan seperti ini
image
demikian semoga bermanfaat.

0 comments:

Post a Comment