首页
/
每日頭條
/
職場
/
wps如何運行sql聯合查詢
wps如何運行sql聯合查詢
更新时间:2025-01-06 10:18:10

  在上一節裡,按區分項目的規則,對數據進行了初步彙總,完成了【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
推荐阅读
奔馳商務七座都有什麼車(進口奔馳七座商務)
奔馳商務七座都有什麼車(進口奔馳七座商務)
     在國内羅倫士商務車以其獨屬的格調設計、舒适乘坐,風靡商務車。比埃爾法座椅還舒适的多功能按摩座椅、方便的第二排過道、移動的會客廳、可放平座椅拼成床的7座MPV、車内進口高檔材料制作、精湛細緻的包覆工藝,都讓駕乘者有不一樣的體驗。#奔馳##豪車##商務車#   羅倫士VS500L      進口奔馳七座豪華商務車   今天給大家帶來其中一款羅倫士VS5...
2025-01-06
相逢時節甯宥第幾集離婚(相逢時節甯宥被渣老公坑慘)
相逢時節甯宥第幾集離婚(相逢時節甯宥被渣老公坑慘)
  閱讀前請點擊“關注”,每天2篇職場文章陪你成長哦。  作者|心恬 編輯|小劉   01《相逢時節》的女主甯宥是優秀的,小時候背負着父親犯罪且自殺的痛楚,小姑娘不僅沒有自暴自棄,反而靠自己在上海打拼出一番事業。人到中年的她已經做到公司的要職,月入百萬。   從這個角度看,誰娶了她,那真是有妻如此夫複何求了吧。   可偏偏甯宥的老公郝青林不滿足,不但不滿足,...
2025-01-06
大廚自學攝影作品欣賞(獨立設計)
大廚自學攝影作品欣賞(獨立設計)
     深圳有這樣一個奇葩的中年人,他曾是時尚攝影界的“老把式”, 40歲時卻決定從職業攝影師轉型做木匠。      “勺子哥”大名叫黃強,混迹時尚圈的人們稱他“強哥”,而如今他更喜歡别人稱他為“勺子哥”。勺子哥做了一百個勺子,每個都不一樣,“每塊木料都有自己的性格,沒一塊是相同的,用它們做成的勺子自然不同了。”               “在人與自然的...
2025-01-06
董事長與總經理崗位職責(繼續講解第七集董事長)
董事長與總經理崗位職責(繼續講解第七集董事長)
  實操講解第七集:董事長兼總經理組織架構與崗位職責究竟是怎樣的?   繼續講解《第七集》《董事長總經理的崗位職責究竟是怎樣的,需要做哪些事情?   ·第一件事情:組織召開《董事會研究企業發展方向以及重大決策會議》。   ·第二件事情:務必做好《三個規劃和一個統籌》。      ·第三件事情:務必做好《三個規劃和一個統籌》。   ·第四件事情:務必做好《整體...
2025-01-06
什麼是波爾多獒犬(解讀波爾多犬)
什麼是波爾多獒犬(解讀波爾多犬)
  波爾多犬起源于法國波爾多地區,當時的波爾多被英國人所支配,于是當地的獵犬與英國帶來的馬士提夫犬進行了交配,随後又和西班牙犬交配産生了如今的波爾多犬,這種狗狗非常的強壯而且兇猛。      波爾多犬誕生之後最早被用來狩獵,他們配合主人一起圍攻熊和野豬等大型野獸,是一種非常得力的助手,再到後來它們被用來放牛,負責看護并且驅趕牛群,後來因為它們異常的兇猛也被用...
2025-01-06
Copyright 2023-2025 - www.tftnews.com All Rights Reserved