日韩小视频-日韩久久一区二区三区-日韩久久一级毛片-日韩久久久精品中文字幕-国产精品亚洲精品影院-国产精品亚洲欧美云霸高清

下載吧 - 綠色安全的游戲和軟件下載中心

軟件下載吧

當前位置:軟件下載吧 > 數據庫 > MS_SQL > SQL開發知識:SQL Server 開窗函數 Over()代替游標的使用詳解

SQL開發知識:SQL Server 開窗函數 Over()代替游標的使用詳解

時間:2024-02-05 12:47作者:下載吧人氣:22

前言:

今天在優化工作中遇到的sql慢的問題,發現以前用了挺多游標來處理數據,這樣就導致在數據量多的情況下,需要一行一行去遍歷從而計算需要的數據,這樣處理的結果就是數據慢,容易卡死。

語法介紹:

1、與Row_Number() 函數結合使用,對結果進行排序,這個是我們使用的非常多的

  SQL開發知識:SQL Server 開窗函數 Over()代替游標的使用詳解

2、與聚合函數結合使用,利用over子句的分組和排序,對需要的數據進行操作

例如:SUM() Over() 累加值、AVG() Over() 平均數
MAX() Over() 最大值、MIN() Over() 最小值

具體介紹:

下面模擬工作中通過開窗函數代替游標的例子,通過期初余額與單據的預收金額、應收金額、實收金額來計算截止本單的期末余額,在以往就是通過游標一行一行去遍歷,計算需要的期末余額,現在使用SUM() Over()來代替,最終要實現的效果圖如下:

SQL開發知識:SQL Server 開窗函數 Over()代替游標的使用詳解

第一行表示標題;第二行表示客戶,是一行空行;第三行是期初余額,只顯示期末余額的數據,第四至第六行表示的是每種單據的余額情況,并逐步匯總當前行的期末余額數據;最后一行表示的是對客戶的合計。

1、構建需要用到的表和數據(簡略版)

–客戶表
CREATE TABLE Organization(
FItemID INT NOT NULL PRIMARY KEY IDENTITY(1,1),
FNumber NVARCHAR(255),
FName NVARCHAR(255)
)

–期初數據表
CREATE TABLE InitialData(
FID INT NOT NULL PRIMARY KEY IDENTITY(1,1),
FCustId INT NOT NULL,
FPreAmount DECIMAL(28,10) NOT NULL DEFAULT(0), –預收金額
FReceivableAmount DECIMAL(28,10) NOT NULL DEFAULT(0), –應收金額
FReceiveAmount DECIMAL(28,10) NOT NULL DEFAULT(0) –實收金額
)

–單據明細表
CREATE TABLE DetailData(
FID INT NOT NULL PRIMARY KEY IDENTITY(1,1),
FCustId INT NOT NULL,
FDate DATETIME NOT NULL,
FBillType NVARCHAR(64) NOT NULL,
FBillNo NVARCHAR(64) NOT NULL,
FPreAmount DECIMAL(28,10) NOT NULL DEFAULT(0), –預收金額
FReceivableAmount DECIMAL(28,10) NOT NULL DEFAULT(0), –應收金額
FReceiveAmount DECIMAL(28,10) NOT NULL DEFAULT(0) –實收金額
)

INSERT INTO Organization(FNumber,FName) VALUES(‘001′,’北京客戶’)
INSERT INTO Organization(FNumber,FName) VALUES(‘002′,’上海客戶’)
INSERT INTO Organization(FNumber,FName) VALUES(‘003′,’廣州客戶’)

INSERT INTO InitialData(FCustId,FPreAmount,FReceivableAmount,FReceiveAmount)
VALUES(1,0,0,0)
INSERT INTO InitialData(FCustId,FPreAmount,FReceivableAmount,FReceiveAmount)
VALUES(2,8000,7245,0)
INSERT INTO InitialData(FCustId,FPreAmount,FReceivableAmount,FReceiveAmount)
VALUES(3,0,1068.21,1068.00)

INSERT INTO DetailData(FCustId,FDate,FBillType,FBillNo,FPreAmount,FReceivableAmount,FReceiveAmount)
VALUES(1,’2020-06-30′,’委托結算’,’XSD20200700008′,0,1221.56,0)
INSERT INTO DetailData(FCustId,FDate,FBillType,FBillNo,FPreAmount,FReceivableAmount,FReceiveAmount)
VALUES(1,’2020-06-30′,’委托結算’,’XSD20200700009′,0,373.46,0)
INSERT INTO DetailData(FCustId,FDate,FBillType,FBillNo,FPreAmount,FReceivableAmount,FReceiveAmount)
VALUES(1,’2020-06-30′,’委托結算退貨’,’XSD20200700010′,0,-427.05,0)
INSERT INTO DetailData(FCustId,FDate,FBillType,FBillNo,FPreAmount,FReceivableAmount,FReceiveAmount)
VALUES(1,’2020-07-30′,’銷售商品返利’,’XSFL20200700005′,0,-17.9,0)

INSERT INTO DetailData(FCustId,FDate,FBillType,FBillNo,FPreAmount,FReceivableAmount,FReceiveAmount)
VALUES(2,’2020-06-25′,’預收退款’,’SKD20200700002′,-755,0,0)
INSERT INTO DetailData(FCustId,FDate,FBillType,FBillNo,FPreAmount,FReceivableAmount,FReceiveAmount)
VALUES(2,’2020-06-20′,’銷售發貨’,’XSD20200700006′,0,6169.50,6169.50)
INSERT INTO DetailData(FCustId,FDate,FBillType,FBillNo,FPreAmount,FReceivableAmount,FReceiveAmount)
VALUES(2,’2020-07-30′,’銷售總額返利’,’XSFL20200700002′,0,-493.56,-421.85)
INSERT INTO DetailData(FCustId,FDate,FBillType,FBillNo,FPreAmount,FReceivableAmount,FReceiveAmount)
VALUES(2,’2020-07-31′,’其他應收’,’QTYS20200900001′,0,6000.00,0)
INSERT INTO DetailData(FCustId,FDate,FBillType,FBillNo,FPreAmount,FReceivableAmount,FReceiveAmount)
VALUES(2,’2020-06-20′,’預收沖應收’,’HXD20200700006′,-7245.00,0,7245.00)

INSERT INTO DetailData(FCustId,FDate,FBillType,FBillNo,FPreAmount,FReceivableAmount,FReceiveAmount)
VALUES(3,’2020-06-30′,’銷售收款’,’SKD20200700003′,0,0,2386.96)
INSERT INTO DetailData(FCustId,FDate,FBillType,FBillNo,FPreAmount,FReceivableAmount,FReceiveAmount)
VALUES(3,’2020-06-30′,’應收轉應收’,’HXD20200700007′,0,2386.75,0)
INSERT INTO DetailData(FCustId,FDate,FBillType,FBillNo,FPreAmount,FReceivableAmount,FReceiveAmount)
VALUES(3,’2020-07-08′,’銷售退貨’,’XSD20200700014′,0,-46.80,0)
GO

標簽MSSQL,SQLServer,技術文檔,數據庫,SQLSERVER

相關下載

查看所有評論+

網友評論

網友
您的評論需要經過審核才能顯示

熱門閱覽

最新排行

公眾號

主站蜘蛛池模板: 国产一级做a爱免费观看 | 国产67194| 亚洲国产品综合人成综合网站 | 久久国产免费一区二区三区 | 男人天堂中文字幕 | 成人自拍网站 | 成人精品一区二区www | 国产成人精品视频 | 国产高清无专砖区2021 | 久久久国产成人精品 | 欧美日本一区二区三区道 | 一本久道久久综合婷婷 | 黄色在线播放 | 中文字幕一区日韩在线视频 | 日韩高清在线播放不卡 | a在线观看欧美在线观看 | 男人天堂中文字幕 | 真人毛片免费全部播放完整 | 欧美国产在线一区 | 日本三级香港三级网站 | 国产精品美女一级在线观看 | 日本精品一在线观看视频 | 日韩免费一级毛片 | 国产男人天堂 | 国产 一二三四五六 | 欧美成人xxx | 一区不卡在线观看 | 91精品福利手机国产在线 | 欧美日韩高清不卡一区二区三区 | 一级毛片在线完整免费观看 | 免费看欧美毛片大片免费看 | 国产三级a三级三级 | 国产三级午夜理伦三级 | 亚洲黄色免费观看 | 欧美国产日韩在线观看 | 最刺激黄a大片免费观看下截 | 亚洲欧洲日产国码二区首页 | 欧美做爰性欧美 | 美女张腿男人桶免费视频 | 97精品国产91久久久久久久 | 免费一级特黄欧美大片勹久久网 |