mysql 動態行轉列 MySQL行轉列

2021-10-12 21:13:54 字數 854 閱讀 7963

比如乙個單子,多個收據單用逗號隔開,怎麼把這乙個單子所有收據單獨展示出來,行轉成列呢?

方法一:

這裡需要用到迴圈,首先建立乙個1-10的序列:

select

@rownum :=@rownum + 1 as seq

from

(select @rownum := 0) r,

bills

limit 0,10

其次依次運用

substring_index(b.receipt_no, ',', seq)

從左到右取單據,

再用concat(substring_index(b.receipt_no, ',', seq - 1),',')

取它前面的多餘的單據,加上逗號,

最後用replace函式把前面多餘取數替換成空值。

迴圈次數由收據多少決定,這裡收據單號都是7位,把逗號替換掉之後除以7即得收據多少。

方法二:

利用mysql自帶的表help_topic裡的help_topic_id作為迴圈序列,

收據大小等於逗號個數+1。

以取出第二個為例,當序號等於2的時候,

先取出前兩個0026704,1006327,然後再反向從右到左取出第二個。

MySql動態行轉列

靜態行轉列簡單一點。動態行轉列就需要涉及到儲存過程。需要統計每個班下了多少套秋裝和冬裝,但由於有的學校可能還下了夏裝,每個學校下的款式不一樣,所以這個列是動態的 所以建乙個檢視 如圖 需要把這個行轉為列 如下儲存函式 begin set sql null set ssq null select gr...

mysql行轉列 subs mysql 行轉列

存在表score,記錄學生的考試成績,如下圖所示 現要求以 學生姓名,語文,數學,英語 這種格式顯示學生成績,如下圖所示 具體步驟如下 1 首先,使用case when函式輸出單個課程的成績 case when course 語文 then score end as 語文 case when cou...

mysql行轉列怎麼用 mysql錶行轉列的用法

現在有一張score表,儲存學生每門課的成績,結構資料如下 idnamesubjectscore 1張三 語文90 2張三 數學88 3張三 外語75 4李四 語文99 5李四 數學70 6李四 外語95 7李五 語文88 8李五 數學85 9李五 外語90 現在要求列出每個學生所有課程的成績.這就...