在弄資料包表的時候,我們常常會用到這個需求。
在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...