【FastReport教程】每個T-SQL程序員應(yīng)該知道的窗口函數(shù)——第1部分
很久以前,Microsoft SQL Server 2005窗口函數(shù)中出現(xiàn)了一個有趣的功能。這些函數(shù)允許您在Select子句中的給定行范圍內(nèi)執(zhí)行計算。對于那些沒有遇到過這些功能的人來說,問題出現(xiàn)了 - “Window是什么意思?”。窗口表示在其中執(zhí)行計算的行集。窗口功能允許您將整個數(shù)據(jù)集分成這樣的窗口。
當然,沒有它們,所有窗口函數(shù)都可以做到。但是,窗口函數(shù)與常規(guī)聚合函數(shù)相比具有很大的優(yōu)勢:無需對數(shù)據(jù)集進行分組以進行計算,這允許您使用其唯一標識符保存集合中的所有行。同時,窗函數(shù)的工作結(jié)果只是作為另一個字段添加到結(jié)果樣本中。 使用窗口函數(shù)而不是常規(guī)聚合函數(shù)的主要優(yōu)點如下:窗口函數(shù)不會將行分組為一行輸出,?R (ORDER BY ChildContractId) AS [SUM] FROM dbo.Pays p1
此選項更快,更簡潔。在我們的例子中,我們得到窗口中CustAccount字段的總和,該字段由ChildContractId字段組成。 這些查詢的結(jié)果將是表格:
根據(jù)Sum列中獲得的數(shù)據(jù),我們確定從父合約轉(zhuǎn)移到子合同的金額。對于合同1000000002,我們?nèi)~償還了債務(wù),因此支付金額為200.對于協(xié)議1000000003,債務(wù)部分償還 - 支付金額等于計算后的余額和支付余額之和第一條記錄(-1000 + 600 = -400)。