sql的行轉列

2021-09-22 13:57:38 字數 1189 閱讀 7539

在弄資料包表的時候,我們常常會用到這個需求。

在mysql中行轉列:

新建乙個表,學生名字,課程,分數:

drop table if exists student;

create table student(

username varchar(20),

subjects varchar(20),

score int(30)

);insert into student values('張三','語文',99);

insert into student values('張三','數學',88);

insert into student values('李四','語文',75);

insert into student values('李四','數學',93);

當我們普通查詢的時候:

select * from student  得到的結果如下:

現在我們想要張三一行中,把全部課程的分數顯示出來,改為如下:

select st.username,

max(case st.subjects when '語文' then st.score else 0 end) '語文',

max(case st.subjects when '數學' then st.score else 0 end) '數學'

這就是我們要的結果。。。

使用:group_concat()函式:

select st.username,group_concat(st.subjects) as '課程',group_concat(st.score) as '分數' from student st 

sql 行轉列問題

題目 下表tproduct某產品在各城市各月銷量情況 city name month no 月 qut qty 臺 杭州 9 100 杭州 10 120 上海 9 130 上海 10 140 請寫sql實現 如下查詢 city 9月銷量 10月銷量 杭州 100 120 上海 130 140 答案一...

SQL 行轉列總結

行轉列應該使用case 想要把某個行轉成列的列名 when 裡將各個列的值放進去 then 分組後某個值要進行彙總行 else 0 end 動態生成的話,將想要用的轉的,用selec查出來拼成以上格式就可以了 declare sql varchar 8000 如果大於8000只能用程式去拼乙個sql...

SQL行轉列例項

sql行轉列是比較經典的問題 比如有如下資料表,有如下某一款號 表1 顏色 尺碼 庫存 紅色 s 10 紅色 m 80 白色 l 50 白色 s 60 要將上面的表轉化為如下格式 表2 顏色 s m l 紅色 10 80 0 白色 60 0 50 動態sql create table tbl 0 c...