最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mysql之如何實現(xiàn)行列轉換

 更新時間:2023年06月15日 10:30:52   作者:藍天⊙白云  
這篇文章主要介紹了Mysql之如何實現(xiàn)行列轉換問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

mysql數(shù)據(jù)庫如何實現(xiàn)行列轉換

1. 行轉列

方案一

select  name,
sum(case when course='java' then grade end) as java,
sum(case when course='C++' then grade end) as C++,
sum(case when course='C#' then grade end) as C#
from test group by name

方案二

select distinct c.`name` AS name,
(select grade from test where name = c.`name` and course = 'java' )as java,
(select grade from test where name = c.`name` and course = 'C++' )as C++,
(select grade from test where name = c.`name` and course = 'C#' )as C#
from test c

結合項目用到的sql:

select  MAIN_STATION_CODE_ as stationCode,
case when SUBSTR(PLAN_START_DATE_, 1, 10)=curdate() then STATION_ else "" end as firstDay,
case when SUBSTR(PLAN_START_DATE_, 1, 10)=DATE_SUB(curdate(),INTERVAL -1 DAY) then STATION_ else "" end as secondDay,
case when SUBSTR(PLAN_START_DATE_, 1, 10)=DATE_SUB(curdate(),INTERVAL -2 DAY) then STATION_ else "" end as thirdDay,
case when SUBSTR(PLAN_START_DATE_, 1, 10)=DATE_SUB(curdate(),INTERVAL -3 DAY) then STATION_ else "" end as fourthDay
from ps_overhaul_plan_row group by MAIN_STATION_CODE_

方案二拓展

上面我們是采用逐個判斷并拼接的方式來進行,那如果極端情況下,假如有成百上千個值需要判斷怎么辦?

這種情況下,能夠立即想到的是采用函數(shù)來拼接出對應的語句塊,再合并在一起執(zhí)行。

假如我們需要拼接下面一句:

(select GRADE_ FROM grade where name_ = c.name_ and course_ = ‘Math') as Math,

使用concat函數(shù)(例子):

select c.name_,concat('(SELECT grade_ from grade where name_=c.name_ ', 'and course_ =''', c.course_, '''', ') as ',c.course_, ')') from grade c

然后再次使用group_concat函數(shù)將多行轉為一行:

SELECT GROUP_CONCAT(distinct concat('(SELECT grade_ from grade where name_=c.name_ ', 'and course_ =''', c.course_, '''', ') as ',c.course_, ')')) from grade c

最后再使用存儲過程完成動態(tài)sql執(zhí)行。

方案三:帶匯總

select ifnull(uid,'Total') uid, uname,
sum(if(`course`='java',grade,0)) 'java',
sum(if(`course`='C++',grade,0)) 'C++',
sum(if(`course`='C#',grade,0)) 'C#',
sum(score) 'total'
from course
group by uid
with ROLLUP

方案四:使用group_concat函數(shù)

SELECT
    id,
    name,
    group_concat(CASE WHEN subject = 'Math' THEN score END SEPARATOR '') '數(shù)學',
    group_concat(CASE WHEN subject = 'English' THEN score END SEPARATOR '') '英語'
FROM test1
GROUP BY name;

2. 列轉行

原表:

實現(xiàn)SQL:

SELECT d.name_,'Math' AS subject,d.Math_ AS score FROM 
grade_column d
UNION ALL
SELECT d.name_, 'English' as SUBJECT,d.English_ as score from
grade_column d

列轉行效果如下:

說明:SELECT “hello” as subject from dual;作用是新添加列subject,并且列值為hello;

總結

行轉列原理:

CASE WHEN或IF,這兩種都是判斷條件,滿足條件的時候我們把它當做新的一列。

列轉行原理:

UNION或UNION ALL,這兩個都是把結果集合并起來,每次查詢學生名稱(基本列)和學科的其中一列的值,再把它們組合起來,這樣結果集就只有學生名稱和科目成績兩列了,這里多加了一列科目。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • MySQL數(shù)據(jù)庫本地事務原理解析

    MySQL數(shù)據(jù)庫本地事務原理解析

    事務是數(shù)據(jù)庫系統(tǒng)中的重要概念,了解這一律念是以正確的方式開發(fā)和數(shù)據(jù)庫交互的應用程序的前提,今天通過本文給大家介紹MySQL數(shù)據(jù)庫本地事務原理解析,感興趣的朋友一起看看吧
    2022-01-01
  • MySql insert插入操作的3個小技巧分享

    MySql insert插入操作的3個小技巧分享

    這篇文章主要介紹了MySql insert插入操作的3個小技巧分享,本文講解了插入的數(shù)據(jù)來源自其他表、插入時排除(忽略)重復記錄、插入時遇到重復記錄做更新操作三個小技巧,需要的朋友可以參考下
    2015-03-03
  • MySQL分區(qū)之HASH分區(qū)詳解

    MySQL分區(qū)之HASH分區(qū)詳解

    hash分區(qū)的目的是將數(shù)據(jù)按照某列進行hash計算后更加均勻的分散到各個分區(qū),下面這篇文章主要給大家介紹了關于MySQL分區(qū)之HASH分區(qū)的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-04-04
  • mysql 行列轉換的示例代碼

    mysql 行列轉換的示例代碼

    這篇文章主要介紹了mysql 行列轉換的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • MySQL MHA集群詳解(數(shù)據(jù)庫高可用)

    MySQL MHA集群詳解(數(shù)據(jù)庫高可用)

    MHA(MasterHighAvailability)是開源MySQL高可用管理工具,用于自動故障檢測與轉移,支持異步或半同步復制的MySQL主從架構,本文介紹MySQL MHA集群(數(shù)據(jù)庫高可用)的相關知識,感興趣的朋友跟隨小編一起看看吧
    2025-11-11
  • MySQL提取Json內(nèi)部字段轉儲為數(shù)字

    MySQL提取Json內(nèi)部字段轉儲為數(shù)字

    本文主要介紹了MySQL提取Json內(nèi)部字段轉儲為數(shù)字,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學習學習吧
    2021-07-07
  • MySql 8.0.16版本安裝提示已經(jīng)不使用“UTF8B3”而是使用“UTF8B4”問題

    MySql 8.0.16版本安裝提示已經(jīng)不使用“UTF8B3”而是使用“UTF8B4”問題

    這篇文章主要介紹了MySql 8.0.16版本安裝提示已經(jīng)不使用“UTF8B3”而是使用“UTF8B4”問題 ,需要的朋友可以參考下
    2019-07-07
  • SQL 聚合、分組和排序

    SQL 聚合、分組和排序

    這篇文章主要介紹了SQL 聚合、分組和排序,文章圍繞SQL 聚合、分組、排序的相關資料展開具體內(nèi)容,需要的朋友可以參考一下
    2021-11-11
  • MySQL數(shù)據(jù)庫恢復(使用mysqlbinlog命令)

    MySQL數(shù)據(jù)庫恢復(使用mysqlbinlog命令)

    binlog是通過記錄二進制文件方式來備份數(shù)據(jù),然后在從二進制文件將數(shù)據(jù)恢復到某一時段或某一操作點。
    2011-08-08
  • Mysql 日期時間 DATE_FORMAT(date,format)

    Mysql 日期時間 DATE_FORMAT(date,format)

    Mysql 日期時間 DATE_FORMAT(date,format) ,需要的朋友可以參考下。
    2010-12-12

最新評論

宁海县| 海南省| 津南区| 竹山县| 新津县| 五大连池市| 阿鲁科尔沁旗| 利川市| 阿拉善盟| 洛南县| 赤水市| 九江县| 交口县| 长阳| 龙山县| 屯昌县| 左云县| 延吉市| 思南县| 老河口市| 铁力市| 竹山县| 棋牌| 上犹县| 南华县| 汽车| 内丘县| 进贤县| 泽州县| 依安县| 理塘县| 荔浦县| 鹤岗市| 大关县| 贵港市| 平武县| 当涂县| 遂昌县| 理塘县| 修水县| 泾川县|