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

有趣生活

當前位置:首頁>職場>wps如何運行sql聯合查詢(7.使用WPS工作薄連接調試SQL之二)

wps如何運行sql聯合查詢(7.使用WPS工作薄連接調試SQL之二)

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

導讀在上一節里,按區分項目的規則,對數據進行了初步匯總,完成了【5.WPS表格報表的SQL數據查詢方案設計】中提到的第一步的目標:第一步,先把同一個項目的計劃進....

在上一節里,按區分項目的規則,對數據進行了初步匯總,完成了【5. WPS表格報表的SQL數據查詢方案設計】中提到的第一步的目標:第一步,先把同一個項目的計劃進行初步匯總,形成每條數據都是不同項目的臨時查詢表。

在這一節中,將逐步完成第二步的目標:第二步,根據第一步生成的臨時查詢表,對功能分類和單位進行分級匯總,生成五級的匯總臨時表,最后把這些分級匯總表進行合并排序,生成最后的報表。這一步要生成排序字段(圖 5.3),五級匯總數據行的排序就依靠這個排序字段實現。

wps如何運行sql聯合查詢(7.使用WPS工作薄連接調試SQL之二)(1)

報表效果 圖5.3

如圖5.3 報表效果圖中,科目名稱中第一行 “合計” 的實現。

首先分析一下合計行的列:

  1. 排序為 0;
  2. 類、款、項三個列都是空;
  3. 科目名稱為合計;
  4. 淺綠色部分的指標及計劃都是根據where條件匯總而來;
  5. 藍色部分是把項目分類進行“行轉列”的操作,行轉列使用iif 函數,具體請搜索 “iif函數行轉列”。
  6. 無group by 分組條件。

根據以上分析,第二步外層SQL 查詢語句如下:

select 0 as [排序], as [類], as [款], as [項], 合計 as [科目名稱] , sum(T.[指標金額]) as [指標總金額], sum(T.[已用指標]) as [指標已用金額], [指標總金額]-[指標已用金額] as [指標可用金額], sum(T.[計劃合計]) 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.[項目類別]<>對個人和家庭補助支出 and T.[項目類別]<>公用經費 and T.[項目類別]<>部門預算項目 and T.[項目類別]<>專項資金項目, T.[計劃合計],0)) as [其他項目]from (/*括號內第一步內層的子查詢,取別名為T*/) as T// 第9~11行 IIF函數判斷如果不屬于以上列舉的情況,統一處理為其他項目分類

從上面的語句可以看出,從子查詢來源的字段只有4個,分別為T.[指標金額]、T.[已用指標]、T.[計劃合計]、T.[項目類別],其他字段都是臨時生成,或者基于以上4個字段計算得到。

第二步外層查詢的實現基礎是第一步內層子查詢生成的臨時表。臨時表的查詢具體請參看 【6. 使用WPS工作薄連接調試SQL之一】,第一步使用的SQL語句如下:

select [單位], [項目], avg([指標總金額]) as [指標金額], avg([指標已用金額]) as [已用指標], [指標金額]- [已用指標] as [指標余額], sum( [計劃金額]) as [計劃合計], [項目類別], [支出功能分類], [政府經濟分類], [部門經濟分類], [是否政府采購]from [src$] where (left([單位],6)="101013") and ([計劃月份] between "01" and "05")group by [單位], [項目], [項目類別], [支出功能分類], [政府經濟分類], [部門經濟分類], [是否政府采購]order by [項目]

根據第二步外層查詢需要字段的信息,把上面的內層子查詢SQL語句進行精簡,只保留需要的4個字段,去掉無用的排序order by 語句:

select avg([指標總金額]) as [指標金額], avg([指標已用金額]) as [已用指標], sum( [計劃金額]) as [計劃合計], [項目類別] from [src$] where (left([單位],6)="101013") and ([計劃月份] between "01" and "05")group by [單位], [項目], [項目類別], [支出功能分類], [政府經濟分類], [部門經濟分類], [是否政府采購]

將上面精簡過的內部子查詢填入第二步外層SQL查詢語句,為了便于閱讀,將外層查詢語句關鍵字大寫:

SELECT 0 as [排序], as [類], as [款], as [項], 合計 as [科目名稱] , sum(T.[指標金額]) as [指標總金額], sum(T.[已用指標]) as [指標已用金額], [指標總金額]-[指標已用金額] as [指標可用金額], sum(T.[計劃合計]) 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.[項目類別]<>對個人和家庭補助支出 and T.[項目類別]<>公用經費 and T.[項目類別]<>部門預算項目 and T.[項目類別]<>專項資金項目, T.[計劃合計],0)) as [其他項目]FROM ( select avg([指標總金額]) as [指標金額], avg([指標已用金額]) as [已用指標], sum( [計劃金額]) as [計劃合計], [項目類別] from [src$] where (left([單位],6)="101013") and ([計劃月份] between "01" and "05") group by [單位], [項目], [項目類別], [支出功能分類], [政府經濟分類], [部門經濟分類], [是否政府采購]) as T

將以上SQL語句復制到WPS查詢的命令文本中,確定。

查詢結果,圖7.0(或7.2第一行)

wps如何運行sql聯合查詢(7.使用WPS工作薄連接調試SQL之二)(2)

圖 7.0

仔細分析數據發現這個匯總結果并不正確,錯誤發生在【指標已用金額、指標可用金額】這兩個字段,通過分析源數據行的數據(圖7.1),發現部分同一項目出現在途數據未更新到所有行,導致一個項目的【指標已用金額】不一致的現象。

wps如何運行sql聯合查詢(7.使用WPS工作薄連接調試SQL之二)(3)

源數據分析 圖7.1

根據圖7.1的分析結果,含在途計劃金額=指標已用金額如果需要含在途計劃的查詢,字段可以精簡到3個,將計劃金額去掉,在外層查詢里做計算即可。

修改為在途計劃查詢的SQL語句:(圖7.2 第三行)

//含在途計劃的查詢SELECT 0 as [排序], as [類], as [款], as [項], 合計 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 max([指標總金額]) as [指標金額], max([指標已用金額]) as [已用指標],[項目類別] from [src$] where (left([單位],6)="101013") and ([計劃月份] between "01" and "05")group by [單位], [項目], [項目類別], [支出功能分類], [政府經濟分類], [部門經濟分類], [是否政府采購]) as T

不含在途計劃的查詢,計劃仍然需要合計:(圖7.2 第二行)

//不含在途計劃的查詢SELECT 0 as [排序], as [類], as [款], as [項], 合計 as [科目名稱] , sum(T.[指標金額]) as [指標總金額], sum(T.[已用指標]) as [指標已用金額],[指標總金額]-[指標已用金額] as [指標可用金額], sum(T.[計劃合計]) 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 max([指標總金額]) as [指標金額], max([指標已用金額]) as [已用指標], sum([計劃金額]) as [計劃合計], [項目類別] from [src$] where (left([單位],6)="101013") and ([計劃月份] between "01" and "05")group by [單位], [項目], [項目類別], [支出功能分類], [政府經濟分類], [部門經濟分類], [是否政府采購]) as T

wps如何運行sql聯合查詢(7.使用WPS工作薄連接調試SQL之二)(4)

數據查詢對比 圖7.2

經過對比,顯然有在途計劃的查詢速度更快,因此,在以后的查詢中,我將選用有在途計劃的查詢方案作為示例。

在本節中,實現了報表合計行的查詢,在下一節將繼續實現類款項的查詢。

TAGS標簽:  如何  運行  聯合  查詢  使用  wps如何運行sql

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

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