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

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

軟件下載吧

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

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

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

前言:

今天在優化工作中遇到的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

相關下載

查看所有評論+

網友評論

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

熱門閱覽

最新排行

公眾號

主站蜘蛛池模板: 草草草影院 | 手机日韩理论片在线播放 | 国产小呦 | 蕾丝视频永久在线入口香蕉 | 亚洲深夜视频 | 成人公开免费视频 | 玖草在线视频 | 国产自在自线午夜精品 | 免费视频一区二区三区四区 | 国产美女一区二区 | 国产成人综合网在线观看 | 欧美中日韩在线 | 成人三级在线观看 | 久久综合九九亚洲一区 | 天堂精品高清1区2区3区 | 亚洲一区二区免费看 | 黄色aaa毛片 | 久久久视频在线 | 她也啪在线视频精品网站 | 杨幂精品国产专区91在线 | 欧美专区一区 | 欧美成人免费公开播放 | 美女免费在线视频 | 亚洲欧美片 | 国产精品国产三级国产专播 | www操操操| 欧美高清一级啪啪毛片 | 成人看的午夜免费毛片 | 国产男女交性视频播放免费bd | 亚欧成人中文字幕一区 | 国产欧美成人一区二区三区 | a级毛片免费高清毛片视频 a级毛片免费高清视频 | 男女在线视频 | 亚洲国产综合人成综合网站00 | 日韩国产欧美一区二区三区 | 午夜毛片视频高清不卡免费 | 国产高清在线精品二区一 | 国产亚洲精品91 | 成人毛片1024你懂的 | 国产一区精品 | 国产成人一区二区三区视频免费 |