MsSql Lead() – Lag() Fonksiyonu

MsSql Lead() – Lag()

Kullandığımız Mssql tabanlı Erp sistemlerinde, bazen kullanıcılar bir rapor içerisinde yer alan veriler üzerinde numaralandırma yapmak isteyebilirler. örneğin herhangi bir satış raporu içerisinde lokasyonların satış raporundaki yeri kaçıncı sırada gibi. bu tür durumlarda en son kullanmış olduğum fonksiyonlardan en önemli iki tanesi şunlar.

LEAD() — bu fonksiyon kayıtlar içerisinde ileri hareket eder. yani sıralamalı bir raporda kaydın hangisi olduğunu verebilir.

LAG() — bu fonksiyon kayılar içerisinde geriye doğru hareket eder.  yani sıralamalı bir raporda kaydın hangisi olduğunu verebilir.

Mağaza sıralamalı bir satış raporu çekmek istediğinizde,

bu fonksiyonları kullanabilirsiniz.

lead() —

LEAD ( scalar_expression [ ,offset ] , [ default ] )  OVER ([ partition_by_clause] order_by_clause)

lag()—

LAG ( scalar_expression [ ,offset ] , [ default ] )  OVER ([ partition_by_clause] order_by_clause)

örnek;

,lead (sum (Loc_NetAmount)) over (order by sum (Loc_NetAmount)) as OncekiKayitTutar
,lag (sum (Loc_NetAmount)) over (order by sum (Loc_NetAmount)) as SonrakiKayitTutar

No Magaza adı Adet NetTutar OncekiKayitMiktar SonrakiKayitMiktar OncekiKayitTutar SonrakiKayitTutar OncekiMagaza SonrakiMagaza
1 A MAGAZASI 3395 18576 NULL 2439 NULL 14581,09 NULL D MAGAZASI
2 D MAGAZASI 2439 14581 3395 1963 18575,69 11732,93 A MAGAZASI C MAGAZASI
3 C MAGAZASI 1963 11733 2439 1274 14581,09 10779,04 D MAGAZASI E MAGAZASI
4 E MAGAZASI 1274 10779 1963 1379 11732,93 9336,88 C MAGAZASI L MAGAZASI

örnek

SELECT -1 + ROW_NUMBER () OVER (ORDER BY CEILING(SUM ([doc_TaxBase])) DESC) AS “No”,
COALESCE(Cod.OfficeDescription,’Genel Toplam’) AS ‘Magaza Adi’
,sum ([Qty1]) AS Adet
,ROUND (sum (Loc_NetAmount),0) AS NetTutar
FROM AllInvoices
INNER JOIN cdOfficeDesc cod ON AllInvoices.OfficeCode=cod.OfficeCode
WHERE AllInvoices.IsCompleted=’1′ AND AllInvoices.InvoiceDate=CONVERT (VARCHAR,GETDATE(),102) AND AllInvoices.TransTypeCode=’2′
GROUP BY cod.OfficeDescription WITH ROLLUP
ORDER BY SUM (Loc_NetAmount) DESC
Author: idelibalta

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir