首页
/
每日頭條
/
職場
/
wps如何運行sql聯合查詢
wps如何運行sql聯合查詢
更新时间:2026-05-14 22:11:27

  在上一節裡,按區分項目的規則,對數據進行了初步彙總,完成了【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
推荐阅读
想保研要有哪些競賽
想保研要有哪些競賽
大學期間,我們不僅要學習自己的專業知識,還可以參加各式各類的競賽,其好處不言而喻:1、提高自己的眼界、鍛煉動手能力和小組協作能力。2、豐富自己的校園經曆,與他人拉開差距,為自己的履曆加上濃墨重彩的一筆。3、為日後的獎學金評定、考研保研、考公...
2026-05-14
畢業珠寶設計師
畢業珠寶設計師
上海工商職業技術學院點擊投票上海工商職業技術學院(原:上海新僑職業技術學院)創建于1993年,由上海海外聯誼會、上海市海外交流協會、上海市歸國華僑聯合會、上海中華職業教育社、上海市工商業聯合會、中國民主建國會上海市委員會等六個統戰系統的社會...
2026-05-14
年終獎應該如何發
年終獎應該如何發
每到年底,年終獎都成為職場人最期待的,大家紛紛羨慕别人家的公司發的年終獎,再看看自己家發的年終獎,有人高興,有人失望。年終獎不同于平時的工資,面對這樣一筆“飛來橫财”,大家都會如何處理?就這麼一個無聊的問題,也有大數據統計和分析。大數據主要...
2026-05-14
八旗俸祿多少
八旗俸祿多少
八旗的福利待遇真不是蓋的,一名普通士兵的收入分成三部分,分别是工資收入、田地收入和丁糧收入。先說說工資收入,當兵肯定要發饷,清軍的饷分兩塊,一個是發錢一個發口糧,八旗兵作為清王朝的依靠,當然饷銀是高人一等的,與同樣是清王朝正規軍的綠營兵比較...
2026-05-14
面試官你還有什麼想要問的嗎
面試官你還有什麼想要問的嗎
在面試最後往往會有一個環節必不可少,也有很多候選人因此而碰壁,那這個是什麼呢?那就是面試官發出最後的邀約:“你還有什麼問題要問我嗎?面試最後聽到這句話,是不是覺得面試結果已經穩過?不!不要高興得太早最後的提問環節也依然是在考察你,這個環節如...
2026-05-14
Copyright 2023-2026 - www.tftnews.com All Rights Reserved