久久综合九色综合97婷婷-美女视频黄频a免费-精品日本一区二区三区在线观看-日韩中文无码有码免费视频-亚洲中文字幕无码专区-扒开双腿疯狂进出爽爽爽动态照片-国产乱理伦片在线观看夜-高清极品美女毛茸茸-欧美寡妇性猛交XXX-国产亚洲精品99在线播放-日韩美女毛片又爽又大毛片,99久久久无码国产精品9,国产成a人片在线观看视频下载,欧美疯狂xxxx吞精视频

有趣生活

當前位置:首頁>職場>wps表格調用數據庫(8.使用WPS工作薄連接調試SQL之三)

wps表格調用數據庫(8.使用WPS工作薄連接調試SQL之三)

發布時間:2024-01-24閱讀(16)

導讀在上一節,實現了報表里合計行的匯總,在本節,我將實現合計行下面的類、款、項和單位的匯總。報表結構如圖8.0:報表結構圖8.0下面分析一下類、款、項和單位匯總....

在上一節,實現了報表里合計行的匯總,在本節,我將實現合計行下面的類、款、項和單位的匯總。

報表結構如圖8.0:

wps表格調用數據庫(8.使用WPS工作薄連接調試SQL之三)(1)

報表結構 圖8.0

下面分析一下類、款、項和單位匯總的特點:

1、排序列:

類、款、項匯總行的排序編碼都是7位。

其中,類的后四位數字補零;款的后兩位補零。

(類款項科目編碼具體解析規則請參考 第5節 內容)

單位匯總行的排序編碼是13位。項科目編碼 單位編碼合并而成。

2、類、款、項 列:

只有類、款、項匯總行顯示科目的相應編碼,其他都為空。

3、科目名稱列:

顯示相應匯總行的科目名稱或單位名稱。

類、款、項的科目名稱根據數據源表src的支出功能分類列提取 “-” 前面的編碼,外連接提取set中的km1、km2、km3 中的名稱(圖8.1);

單位名稱根據數據源表src的單位列提取 “-” 前面的編碼,外連接提取set中的dwbm中的單位名稱(圖8.1)(不直接截取單位列“-”后面的名稱,是因為源數據可能是單位全稱,而報表中使用單位簡稱);

注意:set 表里涉及到的編碼,必須是文本格式的,如果不是文本格式,要使用【分列】功能改成文本格式。

wps表格調用數據庫(8.使用WPS工作薄連接調試SQL之三)(2)

set表部分 圖8.1

4、報表中科目名稱后面的列與合計行后面的列相同:[指標總金額]、[指標已用金額]、[指標可用金額]、[計劃金額合計]、[工資福利支出]、[對個人和家庭補助支出]、[公用經費]、[部門預算項目]、[專項資金項目]、[其他項目]。


下面,根據 第7節 合計匯總行的語句,構造出類匯總行的語句:

SELECT T.[類] & 0000 as [排序], T.[類], as [款], as [項], & L.km1mc as [科目名稱] , sum(T.[指標金額]) as [指標總金額], sum(T.[已用指標]) as [指標已用金額],[指標總金額]-[指標已用金額] as [指標可用金額], [指標已用金額] as [計劃金額(含在途)],sum( iif( T.[項目類別]=工資福利支出, T.[已用指標],0)) as [工資福利支出],sum( iif( T.[項目類別]=對個人和家庭補助支出, T.[已用指標],0)) as [對個人和家庭補助支出],sum( iif( T.[項目類別]=公用經費, T.[已用指標],0)) as [公用經費],sum( iif( T.[項目類別]=部門預算項目, T.[已用指標],0)) as [部門預算項目],sum( iif( T.[項目類別]=專項資金項目, T.[已用指標],0)) as [專項資金項目],sum( iif( T.[項目類別]<>工資福利支出 and T.[項目類別]<>對個人和家庭補助支出 andT.[項目類別]<>公用經費 and T.[項目類別]<>部門預算項目 andT.[項目類別]<>專項資金項目, T.[已用指標],0)) as [其他項目]FROM (select left([支出功能分類],3) as [類], max([指標總金額]) as [指標金額], max([指標已用金額]) as [已用指標],[項目類別] from [src$] where (left([單位],6)="101013") and ([計劃月份] between "01" and "05")group by [單位], [項目], [項目類別], [支出功能分類], [政府經濟分類], [部門經濟分類], [是否政府采購]) as TLEFT JOIN [set$] as L ON T.[類]=L.[km1]GROUP BY T.[類], L.km1mc

結果如圖8.2:

wps表格調用數據庫(8.使用WPS工作薄連接調試SQL之三)(3)

類匯總行 圖8.2

對以上SQL語句的說明:

  1. 字符串連接使用 &,類科目名稱前面加入了四個空格,以便更好的縮進。
  2. 根據外層查詢需要的類科目編碼和名稱,內層查詢使用 left([支出功能分類],3) as [類],這個函數截取3個字符,并使用別名[類]。
  3. T LEFT JOIN [set$] as L ON T.[類]=L.[km1],加粗的關鍵字就是左連接語句,這個語句把 T 這個表和 L 表根據ON后面的條件連接起來,用等式左邊的 T.[類] 為依據,匹配右邊的 L.[km1]。
  4. 類匯總行合計匯總行不同,類匯總行出現了 “真實字段”,T.[類]和L.km1mc,并使用了聚合函數sum,所以后面要使用GROUP BY T.[類], L.km1mc 將沒有使用聚合函數的兩個字段列舉出來。

下面構造出款匯總行語句:

SELECT T.[款] & 00 as [排序], as [類], T.[款], as [項], &L.km2mc as [科目名稱] , sum(T.[指標金額]) as [指標總金額], sum(T.[已用指標]) as [指標已用金額],[指標總金額]-[指標已用金額] as [指標可用金額], [指標已用金額] as [計劃金額(含在途)],sum( iif( T.[項目類別]=工資福利支出, T.[已用指標],0)) as [工資福利支出],sum( iif( T.[項目類別]=對個人和家庭補助支出, T.[已用指標],0)) as [對個人和家庭補助支出],sum( iif( T.[項目類別]=公用經費, T.[已用指標],0)) as [公用經費],sum( iif( T.[項目類別]=部門預算項目, T.[已用指標],0)) as [部門預算項目],sum( iif( T.[項目類別]=專項資金項目, T.[已用指標],0)) as [專項資金項目],sum( iif( T.[項目類別]<>工資福利支出 and T.[項目類別]<>對個人和家庭補助支出 andT.[項目類別]<>公用經費 and T.[項目類別]<>部門預算項目 andT.[項目類別]<>專項資金項目, T.[已用指標],0)) as [其他項目]FROM (select left([支出功能分類],5) as [款], max([指標總金額]) as [指標金額], max([指標已用金額]) as [已用指標],[項目類別] from [src$] where (left([單位],6)="101013") and ([計劃月份] between "01" and "05")group by [單位], [項目], [項目類別], [支出功能分類], [政府經濟分類], [部門經濟分類], [是否政府采購]) as TLEFT JOIN [set$] as L ON T.[款]=L.[km2]WHERE L.km2mc <> GROUP BY T.[款], L.km2mc

結果如圖8.3:

wps表格調用數據庫(8.使用WPS工作薄連接調試SQL之三)(4)

款匯總行 圖8.3

款匯總行類匯總行SQL語句不同的地方:

//第一行差異,排序提取字段不同,類三位加四個0,款是5位加兩個0//真實字段不同分別為T.[類]、L.km1mc;T.[款]、L.km2mc。//科目名稱的縮進不同SELECT T.[類] & 0000 as [排序], T.[類], as [款], as [項], & L.km1mc as [科目名稱] SELECT T.[款] & 00 as [排序], as [類], T.[款], as [項], & L.km2mc as [科目名稱]

//子查詢提取[支出功能分類]的長度不一致select left([支出功能分類],3) as [類]select left([支出功能分類],5) as [款]

//款匯總行多了 WHERE L.km2mc <> 這個過濾條件,這個有什么用呢?//假如 [支出功能分類] 這個字段里面有特殊的科目,這個科目只有一級,沒有二三級科目//一般的科目都是這樣:2010801-行政運行,前面編碼是滿7位的//而特殊科目編碼可能不滿7位:227-預備費、23201-中央政府國內債務付息支出//系統存在這種只到類、款科目的功能分類編碼,這樣就要把取值為空的記錄去掉LEFT JOIN [set$] as L ON T.[類]=L.[km1] GROUP BY T.[類], L.km1mcLEFT JOIN [set$] as L ON T.[款]=L.[km2] WHERE L.km2mc <> GROUP BY T.[款], L.km2mc


下面繼續構造項匯總行SQL語句:

SELECT T.[項] as [排序], as [類], as [款], T.[項], & L.km3mc as [科目名稱] , sum(T.[指標金額]) as [指標總金額], sum(T.[已用指標]) as [指標已用金額],[指標總金額]-[指標已用金額] as [指標可用金額], [指標已用金額] as [計劃金額(含在途)],sum( iif( T.[項目類別]=工資福利支出, T.[已用指標],0)) as [工資福利支出],sum( iif( T.[項目類別]=對個人和家庭補助支出, T.[已用指標],0)) as [對個人和家庭補助支出],sum( iif( T.[項目類別]=公用經費, T.[已用指標],0)) as [公用經費],sum( iif( T.[項目類別]=部門預算項目, T.[已用指標],0)) as [部門預算項目],sum( iif( T.[項目類別]=專項資金項目, T.[已用指標],0)) as [專項資金項目],sum( iif( T.[項目類別]<>工資福利支出 and T.[項目類別]<>對個人和家庭補助支出 andT.[項目類別]<>公用經費 and T.[項目類別]<>部門預算項目 andT.[項目類別]<>專項資金項目, T.[已用指標],0)) as [其他項目]FROM (select left([支出功能分類],7) as [項], max([指標總金額]) as [指標金額], max([指標已用金額]) as [已用指標],[項目類別] from [src$] where (left([單位],6)="101013") and ([計劃月份] between "01" and "05")group by [單位], [項目], [項目類別], [支出功能分類], [政府經濟分類], [部門經濟分類], [是否政府采購]) as TLEFT JOIN [set$] as L ON T.[項]=L.[km3]WHERE L.km3mc <> GROUP BY T.[項], L.km3mc

查詢結果如圖8.4

wps表格調用數據庫(8.使用WPS工作薄連接調試SQL之三)(5)

項匯總行 圖8.4

需要注意的是,為何項的科目名稱不從src的支出功能分類列 “-” 后面提取?原因還是上面說到的,[支出功能分類] 這個字段里面有特殊的科目,科目編碼不一定都是7位的,所以使用

//子查詢提取[支出功能分類]的長度不一致left([支出功能分類],7) as [項]left([支出功能分類],5) as [款]

這兩個函數截取的編碼不一定對,在類似于

T LEFT JOIN [set$] as L ON T.[項]=L.[km3]T LEFT JOIN [set$] as L ON T.[款]=L.[km2]

這樣的左連接匹配時,會找不到L.[km2]或者L.[km3]這個編碼,出現L.km2mc或者L.km3mc為空的記錄,這些記錄在本級匯總時是無用的


下面構造單位匯總行SQL語句:

SELECT T.[km] & T.[dwbm] as [排序], as [類], as [款], as [項], & L.[dwmc] as [科目名稱] , sum(T.[指標金額]) as [指標總金額], sum(T.[已用指標]) as [指標已用金額],[指標總金額]-[指標已用金額] as [指標可用金額], [指標已用金額] as [計劃金額(含在途)],sum( iif( T.[項目類別]=工資福利支出, T.[已用指標],0)) as [工資福利支出],sum( iif( T.[項目類別]=對個人和家庭補助支出, T.[已用指標],0)) as [對個人和家庭補助支出],sum( iif( T.[項目類別]=公用經費, T.[已用指標],0)) as [公用經費],sum( iif( T.[項目類別]=部門預算項目, T.[已用指標],0)) as [部門預算項目],sum( iif( T.[項目類別]=專項資金項目, T.[已用指標],0)) as [專項資金項目],sum( iif( T.[項目類別]<>工資福利支出 and T.[項目類別]<>對個人和家庭補助支出 andT.[項目類別]<>公用經費 and T.[項目類別]<>部門預算項目 andT.[項目類別]<>專項資金項目, T.[已用指標],0)) as [其他項目]FROM ( select left( [支出功能分類], instr([支出功能分類], -) -1 ) as [km], left([單位],6) as [dwbm], max([指標總金額]) as [指標金額], max([指標已用金額]) as [已用指標],[項目類別] from [src$] where (left([單位],6)="101013") and ([計劃月份] between "01" and "05")group by [單位], [項目], [項目類別], [支出功能分類], [政府經濟分類], [部門經濟分類], [是否政府采購]) as TLEFT JOIN [set$] as L ON T.[dwbm]=L.[dwbm]GROUP BY T.[km], T.[dwbm], L.[dwmc]

查詢結果如圖8.5

wps表格調用數據庫(8.使用WPS工作薄連接調試SQL之三)(6)

單位匯總行 圖8.5

//將 提取的科目編碼和單位編碼合并為[排序]字段SELECT T.[km] & T.[dwbm] as [排序]

//第3行代碼 別名[km]中函數的意思是從左邊截取到“-”這個字符為止select left([支出功能分類],7) as [項]select left( [支出功能分類], instr([支出功能分類], -) -1 ) as [km], left([單位],6) as [dwbm]

到此為止,把報表效果圖中所有的匯總行都單獨寫出來了。

下一節,我會把這些單獨的匯總行合并到一起。

歡迎分享轉載→http://www.avcorse.com/read-215570.html

Copyright ? 2024 有趣生活 All Rights Reserve吉ICP備19000289號-5 TXT地圖HTML地圖XML地圖