<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        mysql行列動態轉換的實現(列聯表,交叉表)

        來源:懂視網 責編:小采 時間:2020-11-09 20:40:43
        文檔

        mysql行列動態轉換的實現(列聯表,交叉表)

        mysql行列動態轉換的實現(列聯表,交叉表):(1)動態,適用于列不確定情況 create table table_name( id int primary key, col1 char(2), col2 char(2), col3 int ); insert into table_name values (1 ,'A1','B1',9), (2 ,'A2','B1',7), (
        推薦度:
        導讀mysql行列動態轉換的實現(列聯表,交叉表):(1)動態,適用于列不確定情況 create table table_name( id int primary key, col1 char(2), col2 char(2), col3 int ); insert into table_name values (1 ,'A1','B1',9), (2 ,'A2','B1',7), (

        (1)動態,適用于列不確定情況

        create table table_name(
         id int primary key,
         col1 char(2),
         col2 char(2),
         col3 int
        );
        insert into table_name values
        (1 ,'A1','B1',9),
        (2 ,'A2','B1',7),
        (3 ,'A3','B1',4),
        (4 ,'A4','B1',2),
        (5 ,'A1','B2',2),
        (6 ,'A2','B2',9),
        (7 ,'A3','B2',8),
        (8 ,'A4','B2',5),
        (9 ,'A1','B3',1),
        (10 ,'A2','B3',8),
        (11 ,'A3','B3',8),
        (12 ,'A4','B3',6),
        (13 ,'A1','B4',8),
        (14 ,'A2','B4',2),
        (15 ,'A3','B4',6),
        (16 ,'A4','B4',9),
        (17 ,'A1','B4',3),
        (18 ,'A2','B4',5),
        (19 ,'A3','B4',2),
        (20 ,'A4','B4',5);
        select * from table_name;
        +----+------+------+------+
        | id | col1 | col2 | col3 |
        +----+------+------+------+
        | 1 | A1 | B1 | 9 |
        | 2 | A2 | B1 | 7 |
        | 3 | A3 | B1 | 4 |
        | 4 | A4 | B1 | 2 |
        | 5 | A1 | B2 | 2 |
        | 6 | A2 | B2 | 9 |
        | 7 | A3 | B2 | 8 |
        | 8 | A4 | B2 | 5 |
        | 9 | A1 | B3 | 1 |
        | 10 | A2 | B3 | 8 |
        | 11 | A3 | B3 | 8 |
        | 12 | A4 | B3 | 6 |
        | 13 | A1 | B4 | 8 |
        | 14 | A2 | B4 | 2 |
        | 15 | A3 | B4 | 6 |
        | 16 | A4 | B4 | 9 |
        | 17 | A1 | B4 | 3 |
        | 18 | A2 | B4 | 5 |
        | 19 | A3 | B4 | 2 |
        | 20 | A4 | B4 | 5 |
        +----+------+------+------+
        
        SET @EE='';
        SELECT @EE:=CONCAT(@EE,'SUM(IF(col2=\'',col2,'\'',',col3,0)) AS ',col2,',') FROM (SELECT DISTINCT col2 FROM table_name) A;
        SET @QQ=CONCAT('SELECT ifnull(col1,\'total\') AS columnA,',LEFT(@EE,LENGTH(@EE)-1),' ,SUM(col3) AS TOTAL FROM table_name GROUP BY col1 WITH ROLLUP');
        PREPARE stmt2 FROM @QQ;
        EXECUTE stmt2;
        
        +---------+------+------+------+------+-------+
        | columnA | B1 | B2 | B3 | B4 | TOTAL |
        +---------+------+------+------+------+-------+
        | A1 | 9 | 2 | 1 | 11 | 23 |
        | A2 | 7 | 9 | 8 | 7 | 31 |
        | A3 | 4 | 8 | 8 | 8 | 28 |
        | A4 | 2 | 5 | 6 | 14 | 27 |
        | total | 22 | 24 | 23 | 40 | 109 |
        +---------+------+------+------+------+-------+
        

        (2)第二個字段確定的情況下使用

        SELECT
         IFNULL(col1,'total') AS total,
         SUM(IF(col2='B1',col3,0)) AS B1,
         SUM(IF(col2='B2',col3,0)) AS B2,
         SUM(IF(col2='B3',col3,0)) AS B3,
         SUM(IF(col2='B4',col3,0)) AS B4,
         SUM(IF(col2='total',col3,0)) AS total
         FROM (
         SELECT col1,IFNULL(col2,'total') AS col2,SUM(col3) AS col3
         FROM table_name
         GROUP BY col1,col2
         WITH ROLLUP
         HAVING col1 IS NOT NULL
         ) AS A
         GROUP BY col1
         WITH ROLLUP;

        注: WITH ROLLUP 用于列上求和; SUM(IF(col2='total',col3,0)) AS total 用于行上求和。

        (3)第二個字段確定的情況下使用

        select ifnull(col1,'total') AS col1,
         sum(if(col2='B1',col3,0)) AS B1,
         sum(if(col2='B2',col3,0)) AS B2,
         sum(if(col2='B3',col3,0)) AS B3,
         sum(if(col2='B4',col3,0)) AS B4,SUM(col3) AS TOTAL
         from table_name
         group by col1 with rollup ;

        以上這篇mysql 行列動態轉換的實現(列聯表,交叉表)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

        您可能感興趣的文章:

      1. mysql嵌套查詢和聯表查詢優化方法
      2. MySQL中聯表更新與刪除的語法介紹
      3. mysql刪除關聯表的實操方法
      4. MySQL聯表查詢的簡單示例
      5. 聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        mysql行列動態轉換的實現(列聯表,交叉表)

        mysql行列動態轉換的實現(列聯表,交叉表):(1)動態,適用于列不確定情況 create table table_name( id int primary key, col1 char(2), col2 char(2), col3 int ); insert into table_name values (1 ,'A1','B1',9), (2 ,'A2','B1',7), (
        推薦度:
        標簽: mysql 交叉表 )
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 成年18网站免费视频网站| aⅴ在线免费观看| 免费v片在线观看品善网| 久久亚洲色WWW成人欧美| 亚洲成人福利在线| 免费无码又爽又刺激高潮视频| 国产成A人亚洲精V品无码| 久久久久国产精品免费看| 亚洲AV日韩精品久久久久久久| 国产无遮挡裸体免费视频在线观看| 毛片网站免费在线观看| 亚洲熟女少妇一区二区| 丝袜捆绑调教视频免费区| 国产亚洲精品久久久久秋霞 | 免费国产午夜高清在线视频 | 亚洲人成网站在线观看播放青青| 国产免费内射又粗又爽密桃视频| 野花高清在线观看免费3中文| 亚洲国产综合精品| 女人18毛片水真多免费看 | 午夜免费福利影院| 黄色毛片免费在线观看| 亚洲精品制服丝袜四区| 免费无遮挡无码永久视频| 国产99在线|亚洲| 亚洲?v无码国产在丝袜线观看| 亚洲色大成网站www永久| 一个人免费观看www视频在线| 亚洲AV无码一区二区三区牲色 | 亚洲AV区无码字幕中文色| 99视频全部免费精品全部四虎| 亚洲美国产亚洲AV| 亚洲中文字幕久久精品无码APP | 精品国产日韩亚洲一区91| 亚洲宅男天堂在线观看无病毒| 99蜜桃在线观看免费视频网站| 亚洲色大成WWW亚洲女子| 欧亚精品一区三区免费| 一个人看的www免费在线视频| 综合自拍亚洲综合图不卡区| 免费国产小视频在线观看|