欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

1. 行轉(zhuǎn)列

方案一

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

結(jié)合項目用到的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ù)來拼接出對應(yīng)的語句塊,再合并在一起執(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ù)將多行轉(zhuǎn)為一行:

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ù)學(xué)',
    group_concat(CASE WHEN subject = 'English' THEN score END SEPARATOR '') '英語'
FROM test1
GROUP BY name;

2. 列轉(zhuǎn)行

原表:

實現(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

列轉(zhuǎn)行效果如下:

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

總結(jié)

行轉(zhuǎn)列原理:

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

列轉(zhuǎn)行原理:

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

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

相關(guān)文章

  • mysql解決時區(qū)相關(guān)問題

    mysql解決時區(qū)相關(guān)問題

    這篇文章主要介紹了mysql如何解決時區(qū)相關(guān)問題,本篇文章將從數(shù)據(jù)庫參數(shù)入手,逐步介紹時區(qū)相關(guān)內(nèi)容。感興趣的朋友可以了解下
    2020-08-08
  • MySQL 聚合函數(shù)排序

    MySQL 聚合函數(shù)排序

    這篇文章主要介紹了MySQL查詢排序與查詢聚合函數(shù)用法,結(jié)合實例形式分析了MySQL查詢結(jié)果排序以及查詢聚合函數(shù)相關(guān)使用技巧,需要的朋友可以參考下
    2021-07-07
  • MySQL流程控制IF()、IFNULL()、NULLIF()、ISNULL()函數(shù)的使用

    MySQL流程控制IF()、IFNULL()、NULLIF()、ISNULL()函數(shù)的使用

    這篇文章介紹了MySQL流程控制IF()、IFNULL()、NULLIF()、ISNULL()函數(shù)的使用方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-12-12
  • centos 6.9安裝mysql的詳細(xì)教程

    centos 6.9安裝mysql的詳細(xì)教程

    這篇文章主要介紹了centos 6.9安裝mysql的詳細(xì)教程,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-07-07
  • MySQL修改賬號密碼方法大全(小結(jié))

    MySQL修改賬號密碼方法大全(小結(jié))

    這篇文章主要介紹了MySQL修改賬號密碼方法大全(小結(jié)),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • MySQL定期分析檢查與優(yōu)化表的方法小結(jié)

    MySQL定期分析檢查與優(yōu)化表的方法小結(jié)

    聽DBA的人說,相比oracle,MySQL就是一個玩具級別的數(shù)據(jù)庫,在網(wǎng)易門戶中,DBA基本很少去管理到MySQL的東西,所以我們產(chǎn)品使用到的MySQL的一些配置和優(yōu)化還是需要我們開發(fā)人員自己動手,下面就簡單介紹一下實用的定期優(yōu)化方法
    2014-06-06
  • mysql主從復(fù)制配置過程

    mysql主從復(fù)制配置過程

    網(wǎng)站面臨大流量的情況下,數(shù)據(jù)庫讀寫成了性能瓶頸。除了使用多級緩存外,進行數(shù)據(jù)讀寫分離,也是提高網(wǎng)站承載能力重要的手段。本文介紹mysql讀寫分離、mysql主從復(fù)制配置過程。
    2020-09-09
  • MySQL如何給查詢結(jié)果添加行號

    MySQL如何給查詢結(jié)果添加行號

    這篇文章主要介紹了MySQL如何給查詢結(jié)果添加行號的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • 淺談MySQL?中?null?值的那些坑

    淺談MySQL?中?null?值的那些坑

    本文解析MySQL中null值的定義與常見問題,如比較運算符失效、WHERE條件誤用、IN子查詢異常,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-09-09
  • MySQL腳本轉(zhuǎn)換為StarRocks的完整指南

    MySQL腳本轉(zhuǎn)換為StarRocks的完整指南

    本指南詳細(xì)說明如何將MySQL數(shù)據(jù)庫腳本轉(zhuǎn)換為StarRocks兼容的格式,包括語法差異、數(shù)據(jù)類型映射、最佳實踐和常見問題解決方案,需要的朋友可以參考下
    2025-09-09

最新評論