Office中國(guó)論壇/Access中國(guó)論壇

 找回密碼
 注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

返回列表 發(fā)新帖
查看: 1996|回復(fù): 2
打印 上一主題 下一主題

[查詢] 如何讓一個(gè)表胖起來(lái)——淺談交叉表查詢和聯(lián)合查詢

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
1#
發(fā)表于 2024-1-20 02:23:34 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
      對(duì)于一個(gè)人來(lái)說(shuō),胖起來(lái)就是變寬,比如,腰圍變寬了,以前我的褲腰是28碼,現(xiàn)在32碼。要說(shuō)體重沒(méi)增加,我估計(jì)沒(méi)人會(huì)信。      大多數(shù)情況下,增肥其實(shí)并不難。少運(yùn)動(dòng),少動(dòng)腦,多吃多睡,不熬夜,很快就會(huì)胖起來(lái)。
      而對(duì)于表來(lái)說(shuō),”胖“起來(lái) 當(dāng)然是將它變成寬表(不了解寬表的版友,請(qǐng)移步這里)了。
      最直接的方法就是用交叉表查詢。眾所周知,交叉表查詢將一列(字段)轉(zhuǎn)為列標(biāo)題后,想不寬都難。
      但如果已經(jīng)是寬表了,又應(yīng)該如何處理?

      比如,如何將上圖轉(zhuǎn)為下圖?

      這問(wèn)題就像在問(wèn):如何讓一個(gè)180斤的胖子,變成320斤的相撲選手。
      雖然聽(tīng)起來(lái)很難,但實(shí)際上,稍作思考,我們就會(huì)有答案了。這些A、B之類(lèi),來(lái)自于科目的選項(xiàng)內(nèi)容。因此,需要將科目名稱(chēng)和選項(xiàng)內(nèi)容分別作為兩列,然后進(jìn)行拼接。拼接完成后,再進(jìn)行統(tǒng)計(jì)即可。
      選項(xiàng)內(nèi)容已經(jīng)存在了,也就是”語(yǔ)數(shù)英物化“這幾列。但科目名稱(chēng)是沒(méi)有的,因此,需要自定義創(chuàng)建一列。第一個(gè)查詢大致是這樣的:
  1. SELECT 班級(jí), 題號(hào), 語(yǔ) as 選項(xiàng), "語(yǔ)文" AS 科目
  2. FROM b
復(fù)制代碼
     考慮到不止”語(yǔ)文“一個(gè)選項(xiàng)。因此最終的查詢應(yīng)該是一個(gè)聯(lián)合查詢:
  1. SELECT 班級(jí), 題號(hào), 語(yǔ) as 選項(xiàng), "語(yǔ)文" AS 科目
  2. FROM b
  3. union all
  4. SELECT 班級(jí), 題號(hào), 數(shù) as 選項(xiàng), "數(shù)學(xué)" AS 科目
  5. FROM b
  6. union all
  7. SELECT 班級(jí), 題號(hào), 英 as 選項(xiàng), "英語(yǔ)" AS 科目
  8. FROM b
  9. union all
  10. SELECT 班級(jí), 題號(hào), 物 as 選項(xiàng), "物理" AS 科目
  11. FROM b
  12. UNION ALL SELECT 班級(jí), 題號(hào), 化 as 選項(xiàng), "化學(xué)" AS 科目
  13. FROM b;
復(fù)制代碼
     創(chuàng)建完的聯(lián)合查詢是這樣的:

      不但沒(méi)胖,反而更”瘦“(長(zhǎng))了。接下來(lái)怎么辦?
      沒(méi)錯(cuò),就是將這個(gè)瘦子變胖:

最終結(jié)果如附件所示:


這里給大家一個(gè)思路,當(dāng)寬表不好轉(zhuǎn)化為交叉表查詢時(shí),不妨先使用聯(lián)合查詢,轉(zhuǎn)為長(zhǎng)表,再轉(zhuǎn)為交叉表查詢。
最后留一個(gè)作業(yè)題。如果用iif,能否達(dá)成這個(gè)效果?如果能,請(qǐng)完成后上傳附件,并說(shuō)明用iif處理和交叉表查詢處理的區(qū)別。

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒(méi)有帳號(hào)?注冊(cè)

x
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享1 分享淘帖 訂閱訂閱

點(diǎn)擊這里給我發(fā)消息

2#
發(fā)表于 2024-1-22 09:56:21 | 只看該作者
不錯(cuò)的技巧!

點(diǎn)擊這里給我發(fā)消息

3#
發(fā)表于 2024-1-23 08:57:36 | 只看該作者
查詢結(jié)果有256列的限制嗎?
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則

QQ|站長(zhǎng)郵箱|小黑屋|手機(jī)版|Office中國(guó)/Access中國(guó) ( 粵ICP備10043721號(hào)-1 )  

GMT+8, 2025-7-13 02:27 , Processed in 0.101517 second(s), 27 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回復(fù) 返回頂部 返回列表