首页
/
每日頭條
/
職場
/
wps如何運行sql聯合查詢
wps如何運行sql聯合查詢
更新时间:2025-09-13 13:15:14

  在上一節裡,按區分項目的規則,對數據進行了初步彙總,完成了【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
推荐阅读
遊戲主播電競選手雙男主文(原耽推文:主播撿到一隻電競大神然後主播就去打職業了)
遊戲主播電競選手雙男主文(原耽推文:主播撿到一隻電競大神然後主播就去打職業了)
  啦啦啦,小女又來啦!!!   親愛的小仙女們,歡迎來到小女的小小天地,小女,一個小甜文愛好者,緻力于看遍好看的小說,把自己看到的好看的推薦給小仙女們,人送外号“人肉排雷機”(其實是自封的)。   喜歡小女這種負責任分享小說,不用等着别人排雷的小仙女可以關注小女呀,每天都有小說看!不用放屁股等踢啦!   ——————☞☜——————      《撿到一隻電...
2025-09-13
魯迅每月300大洋相當于現在多少錢(魯迅每月的工資是350塊大洋)
魯迅每月300大洋相當于現在多少錢(魯迅每月的工資是350塊大洋)
  對于一份工作的好壞,人們最關心的往往是工資,然後才是工作環境、晉升途徑、企業文化等,這也就是為什麼一些互聯網企業推行殘酷的996制度,但還是被很多人趨之若鹜,高工資是這些企業吸引優秀求職者的重要方式。民國時期,高校教師也是一個非常受人歡迎的職業,主要原因是人們普遍尊重教師,并給予了他們很高的待遇。   人們很推崇的思想家、文學家和教師魯迅,他當時的工資是...
2025-09-13
山東交通職業學院濰坊校區新生照(濰坊高校迎來首批報到新生)
山東交通職業學院濰坊校區新生照(濰坊高校迎來首批報到新生)
  記者 尹明亮   新生來了,8月27日、28日,山東交通職業學院2022級大學新生相繼開學報到,成為濰坊首個迎來2022級大學新生的高校。5600多名新生也為這個大學校園增添的新的活力。      戴上學校徽章,大飛機前合個影   8月27日,在學校網紅大飛機前,學校公路與建築系和車輛工程系的迎新攤位一字擺開,藍天下、飛機旁,學校老師親手給每個報到的學生...
2025-09-13
江美儀說的降頭是誰(同盟被爆出幕後大老闆不是江美儀)
江美儀說的降頭是誰(同盟被爆出幕後大老闆不是江美儀)
  昨天最新一集《同盟》播出,幕後大boss露面,是由江美儀飾演的今天,然而有人爆出大boss竟是另有其人!你覺得究竟是誰呢?      有人說是易先生。這個猜測并不是沒有道理,畢竟保護令小姐多年,令小姐的一切他都最清楚。      羅樂林你們覺得可能性大嗎,反正他一出場我第一感覺是他。但是他除了操控警局,好像沒有操控媒體和廉政署的權利了吧!      也有...
2025-09-13
江柏萱大決戰(江柏萱重生催淚下線)
江柏萱大決戰(江柏萱重生催淚下線)
     由優酷、阿裡巴巴影業等出品,楊冬執導,指紋編劇,張譯、趙子琪、張昊唯、趙今麥、江柏萱等人主演的刑偵懸疑劇《重生》正在熱播中。其中江柏萱飾演的督察處處長邱冬陽在本周告别觀衆,引得網友不舍,隔空喊話“留下來”。   網劇《重生》中,江柏萱飾演督察處處長邱冬陽一角,負責調查714案件的真相,而作為案件唯一的幸存者秦馳(張譯 飾)則成為了他調查的重點對象。...
2025-09-13
Copyright 2023-2025 - www.tftnews.com All Rights Reserved