行轉列的資料

2022-02-26 06:02:06 字數 1482 閱讀 6188

#for xml path(param)--將查詢結果以xml格式輸出

1 select id,name from table1 for xml path

2 --id和name為table1的真實字段

- path後面沒有引數時,每行資料被預設標籤包裹,每行列資料被被其列名標籤包裹。

上面sql的結果可如下:

1 2     1

3 holab

4 5 6 2

7 name1

8 9 ....

- 每行資料最外面包裹的標籤由path的引數控制(沒有引數時,預設為row),所以要去掉則可以直接給乙個空字串作為path的引數。

- 每行列資料所被直接包裹的標籤由查詢結果的列名控制,要去掉只需要保證查詢出來的列沒有列名就可以了(保證沒有列名最簡單的方法是給每個欄位加乙個空字串)。

1 select (select id+'',name+'' from table1 for xml path(''))
結果:

1 1holab2name1....
#stuff函式

stuff(character_expression,start,length,replacewith_expression)

刪除指起始位置(start)指定長度(length)的字元,並在該位置插入代替的字元(replacewith_expression)

#row_number() over(order by column)--為查詢結果新增序號列 

1 select id,name,row_number over(order by id) as num from table1
結果:

1 id    name     num

2 1 holab 1

3 2 name1 2

4 4 name 3

5 ....

#將查詢結果拼接成以逗號分隔的字串--每條資料以逗號分隔

1 select stuff((select ','+id+':',name+'' from table1 for xml path('')),1,1,'')
結果:

1 1:holab,2:name1....
#將查詢結果的每條資料換行顯示(每行開頭新增序號)

1 select (select row_number() over(order by id)+'、',id+':',name+char(10) from table1 for xml path(''))
結果:

1 1、1:holab

2 2、2:name2

3 ....

4 5 --char(10)為sql server中的換行符

6 --因為最後一行也有換行符,所以最後會多一行空白行

mysql單錶行轉列 mysql資料行轉列

在你找工作的經歷當中,是否有面試官問過你 資料庫行轉列如何實現?乙個典型的例子如下 有這樣乙個訂單表 om order 一條記錄包含訂單號 建立日期 訂單總金額 讓你統計不同年份對應各月份的銷售情況,要求每一年的銷售情況一行展示,效果如下 年份 一月 二月 三月 四月 五月 六月 七月 八月 九月 ...

資料行轉列例項

在系統開發中常常遇到進行資料的統計,並將資料行轉列的情景,例如表中的表示。但是在資料庫中呈現出來的資料往往是橫行的樣式。這就需要乙個轉換。轉換的方式有兩種方式。1.利用cross join去進行轉換。2.利用case when函式去轉換。資料庫查詢出的結果 張三170 李四90 王五180 需要資料...

mysql行轉列 subs mysql 行轉列

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