行轉列及列轉行查詢

開發過程中常遇到行轉列或是列轉行的問題,即需要將數據庫中一張表信息進行行轉列操作,再將每列(即每個字段)作為與其他表進行聯表查詢的字段進行顯示。

一、行轉列:將原來同一列下多行的不同內容作為多個字段,輸出對應內容

數據庫表中的內容:

轉換后:

解析:

  行轉列是將原來的subject字段的多行內容選出來,作為結果集中的不同列,并根據code進行分組顯示對應的score


?mysql> select s.name 姓名,s.code 學號,

??? -> sum(if(e.subject='語文',e.score,0)) 語文成績,

??? -> sum(if(e.subject='數學',e.score,0)) 數學成績,

??? -> sum(if(e.subject='英語',e.score,0)) 英語成績

??? -> from student s

??? -> left join exam e

??? -> on s.code=e.code

??? -> group by s.code;


  ①sum()函數是為了能夠使用group by根據code進行分組,因為每一個student.code對應的exam.subject='語文'的記錄只有一條,所以sum()的值就等于對應那一條記錄的exam.score的值。

  (正常情況下此記錄都是只有一條,當然如果有多條的話,可以使用sum()、max()、avg()、min()等聚合函數也都可以達到行轉列的效果)

  ②if(e.subject='語文',e.score,0)作為條件,即對所有經過group by s.code分組的e.subject='語文'的記錄的e.score字段進行SUM()、MAX()、MIN()、AVG()操作,如果e.score沒有值則默認為0。

  (當然使用case when then作為條件進行信息提取也是OK的)

?

二、列轉行:將sid的每個科目分數分散成一條記錄顯示

數據庫中的表:

轉換后:

解析:

??? 使用union all將每個sname對應的多個科目的成績的結果集加起來


?mysql> select sname,sid,'語文' as subject,語文 as score from transcript

??? -> union all

??? -> select sname,sid,'數學' as subject,數學 as score from transcript

??? -> union all

??? -> select sname,sid,'英語' as subject,英語 as score from transcript

? ? -> order by sname;?


?UNION與UNION ALL的區別:

  1.對重復結果的處理:UNION會去掉重復記錄,UNION ALL不會;

  2.對排序的處理:UNION會排序,UNION ALL只是簡單地將兩個結果集合并;

  3.效率方面的區別:因為UNION 會做去重和排序處理,因此效率比UNION ALL慢很多

轉載于:https://www.cnblogs.com/geaozhang/p/6758364.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/254770.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/254770.shtml
英文地址,請注明出處:http://en.pswp.cn/news/254770.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

移動端系列講解之字體單位

移動端字體單位有哪些?他們的兼容性如何?他們的特點?1.移動端字體單位現在主要有 em 、rem 、px 2.兼容性請傳送點擊這里 em: em是相對長度單位。相對于父元素設置的字體大小。em相對于當前對象內文本的字體尺寸。如當前對行內文本的字體尺寸…

x264_param_t參數注解

typedef struct x264_param_t { CPU 標志位 unsigned int cpu; int i_threads; 并行編碼多幀 int b_deterministic; 是否允許非確定性時線程優化 int i_sync_lookahead; 線程超前緩沖 視頻屬性 int i_width; 寬度 int i_height; 高…

gen_circle_contour_xld創建圓或圓弧的XLD輪廓

目錄gen_circle_contour_xld(算子)描述參數gen_circle_contour_xld(算子) gen_circle_contour_xld - 創建圓或圓弧的XLD輪廓。 gen_circle_contour_xld(:ContCircle:Row,Column&am…

一、Java語言基礎(4)_方法和數組——數組

2018-04-25 不悔夢歸處,只恨未盡心 數組 一、一維數組 數組的含義:具有相同類型的多個變量按有序形式組織起來的數據形式。(數組是用來存儲固定大小的同類型元素。)數組的定義:方式1(推薦使用)&…

http header 具體解釋

HTTP(HyperTextTransferProtocol)即超文本傳輸協議,眼下網頁傳輸的的通用協議。HTTP協議採用了請求/響應模型,瀏覽器或其它client發出請求,server給與響應。就整個網絡資源傳輸而言,包含message-header和me…

研究生開題報告需要注意的幾點

1 畢業論文選題的原則 畢業論文選題一般要求滿足以下原則: ①開拓性:前人沒有專門研究過或雖已研究但尚無理想的結果,有待進一步的探討和研究,或是學術界有分歧,有必要深入研究探討的問題;…

create_metrology_model創建測量幾何形狀所需的數據結構(原理)

目錄create_metrology_model(算子)描述二維計量的基本原理創建計量模型數據結構提供近似值修改模型參數修改對象參數對齊計量模型應用測量訪問結果清理記憶注意參數create_metrology_model(算子) create_metrology_model - 創建測…

X264碼率控制流程分析

碼率控制的理論知識:碼率控制的目的和意義:圖像通信中碼率控制的目的:通過調節編碼參數,控制單位時間內的編碼視頻流的數據量,以使產生的比特流符合各種應用的需求。視頻壓縮的效率和視頻內容有很大的關系,…

STL-list

#include "stdafx.h"#include<iostream>#include<string>#include<vector>//vector向量容器#include<deque>#include<list>#include<algorithm>using namespace std;/* list介紹 list容器實現了雙向鏈表的數據結構&#xff0c;數…

Java微信二次開發(九)

多媒體文件上傳與下載 第一步&#xff1a;找到包com.wtz.vo&#xff0c;新建類WeixinMedia.java 1 package com.wtz.vo;2 3 /**4 * author wangtianze QQ:8646200125 * date 2017年4月25日 上午11:10:316 * <p>version:1.0</p>7 * <p>descri…

add_metrology_object_generic將測量對象添加到計量模型中

目錄add_metrology_object_generic&#xff08;算子&#xff09;描述可能的形狀測量區域的定義通用參數參數add_metrology_object_generic&#xff08;算子&#xff09; add_metrology_object_generic - 將計量對象添加到計量模型中。 add_metrology_object_generic&#xff…

關于發那科機器人的FSSB

&#xfeff;&#xfeff;FSSB是指fanuc Serial Servo Bus&#xff0c;即發那科串行伺服總線&#xff08;光纜&#xff09;&#xff0c;連接CNC與伺服放大器。HSSB是指High-Speed Serial Bus&#xff0c;即高速串行總線&#xff08;光纜&#xff09;&#xff0c;連接CNC與外部P…

H264規定了三種主要檔次

H264規定了三種主要檔次&#xff0c;每個檔次支持一組特定的編碼功能&#xff0c;并支持一類特定的應用。 1、基本檔次&#xff08;Baseline Profile&#xff09;&#xff1a;利用I片和P片支持幀內和幀間編碼&#xff0c;支持利用基于上下文的自適應的變長編碼進行的熵編碼&…

get_metrology_object_result 獲取計量模型的測量結果

目錄get_metrology_object_result&#xff08;算子&#xff09;描述result_type&#xff1a;獲取所有參數&#xff1a;獲取特定參數&#xff1a;獲得分數&#xff1a;used_edges&#xff1a;行&#xff1a;列&#xff1a;振幅&#xff1a;angle_direction&#xff1a;參數get_m…

iOS開發UI篇—字典轉模型

一、能完成功能的“問題代碼” 1.從plist中加載的數據 2.實現的代碼 1 //2 // LFViewController.m3 // 03-應用管理4 //5 // Created by apple on 14-5-22.6 // Copyright (c) 2014年 heima. All rights reserved.7 //8 9 #import "LFViewController.h" 10 11 i…

Codechef:Path Triples On Tree

Path Triples On Tree 題意是求樹上都不相交或者都相交的路徑三元組數量。 發現blog里沒什么樹形dp題&#xff0c;也沒有cc題&#xff0c;所以來丟一道cc上的樹形dp題。 比較暴力&#xff0c;比較惡心 #include<cstdio> #include<algorithm> #define MN 300001 #de…

grbl

第一次發帖...之前上論壇都是查資料的&#xff0c;發現gcode這一塊資料比較少先說一下Gcode:Gcode在工業控制上用的很多&#xff0c;是一種通用的控制指令&#xff0c;數控機床上經常用&#xff0c;在我diy雕刻機&#xff08;打印機之類的&#xff09;的時候要用到&#xff0c;…

mybitis實現增,刪,改,查,模糊查詢的兩種方式:(2)

方式二&#xff1a;mapper代理接口方式 這種方式只需要xml接口&#xff08;不用寫實體類&#xff09;但是需要符合三個規范 使用mapper代理接口方式在同一目錄下&#xff08;可以創建一個源文件夾&#xff0c;達到類文件和xml文件分類的作用&#xff09;xml中namespace&#xf…

C語言中的靜態函數的作用

轉載 在C語言中為什么要用靜態函數(static function)&#xff1f;如果不用這個static關鍵字&#xff0c;好象沒有關系。那么&#xff0c;用了static以后&#xff0c;有什么作用呢&#xff1f;我們知道&#xff0c;用了static的變量&#xff0c;叫做靜態變量&#xff0c;其意義是…

[轉] sql server 跨數據庫調用存儲過程

A庫存儲過程&#xff1a; create PROCEDURE [dbo].[spAAAForTest] ( UserName nvarchar(20) null ,LoginPwd nvarchar(60) null ) AS BEGINselect NA AS a, NB AS B, NC AS C;END 同一臺服務器實例&#xff0c;A&#xff0c;B兩個數據庫&#xff0c;…