首页
/
每日頭條
/
職場
/
wps如何運行sql聯合查詢
wps如何運行sql聯合查詢
更新时间:2026-11-10 21:36:13

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

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

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

  報表效果 圖5.3

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

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

  排序為 0;類、款、項三個列都是空;科目名稱為合計;淺綠色部分的指标及計劃都是根據where條件彙總而來;藍色部分是把項目分類進行“行轉列”的操作,行轉列使用iif 函數,具體請搜索 “iif函數行轉列”。無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 and ) group by [單位], [項目], [項目類别], [支出功能分類], [政府經濟分類], [部門經濟分類], [是否政府采購] order by [項目]

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

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

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

  數據查詢對比 圖7.2

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

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

  ,

Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
機關事業單位勞務派遣能不能轉正
機關事業單位勞務派遣能不能轉正
首先明确一個問題,勞務派遣工沒有“轉正”這個概念,這也是很多企業和機關事業單位喜歡用勞務派遣工的一大原因。這個問題解釋起來也并不複雜,所說的勞務派遣工,有一個大家都很熟悉的名字,叫“臨時工”。“臨時工”與用人單位沒有一毛錢的關系,雖然和正式...
2026-11-10
換雨刮一定要去4s
換雨刮一定要去4s
【有車大師:用車知識】當我們發現前車窗的雨刮器隻噴水,雨刮器不動時,很多人認為電機燒壞了,直接去汽車修理廠處理。一家更好的汽車修理店将幫助你檢查雨刷不動的原因,而一家更好的汽車修理店将直接告訴馬達它需要更換(燒毀),這将花費你一百元。所以我...
2026-11-10
十年的友情和八年的愛情
十年的友情和八年的愛情
十年的友情和八年的愛情?這部劇中要說活寶,那就非小何雨莫屬了,逗比的生活狀态,輕松搞笑又不乏字字珠玑的真知灼見,讓大家在看劇的時多了一些會心一笑的愉悅感,要說這部劇的之所以能一下子沖出來成為一匹黑馬,小何雨這條線絕對不亞于主角辣目洋子的戲碼...
2026-11-10
2004年的重慶工業職業技術學院
2004年的重慶工業職業技術學院
2004年的重慶工業職業技術學院?1.北京女子師範學院(1941)沿革,我來為大家科普一下關于2004年的重慶工業職業技術學院?下面希望有你要的答案,我們一起來看看吧!2004年的重慶工業職業技術學院北京女子師範學院(1941)-重慶工貿職...
2026-11-10
沒有工作的一年何雨辭職後續
沒有工作的一年何雨辭職後續
#沒有工作的一年大結局#文/羅小可《沒有工作的一年》終于大結局了,自開播以來話題度滿滿,女主角大雨滬漂的種種經曆讓不少都市打工人都感同身受。關于大結局,每一個角色都似乎如願以償,有些夢幻不現實的感覺。大雨接手了一家民宿,搖身一變成為老闆娘,...
2026-11-10
Copyright 2023-2026 - www.tftnews.com All Rights Reserved