SQL把查詢出的列轉換成行,SQL把查詢出的一個列轉換成行

2022-10-05 11:20:28 字數 4360 閱讀 3296

1樓:匿名使用者

看這裡,比較詳細

sql 如何把一列的值轉換成一行顯示

2樓:匿名使用者

1、最原始的方法,利用 select....unionselect 欄位1 from 表名 where 條件 union select 欄位2 from 表名 where 條件 select 欄位3 from 表名 where 條件 ......

2、利用 sys_connect_by_path函式select sys_connect_by_path(欄位, '>') "path"

from 表名

start with 條件

connect by prior 條件;

3樓:

要使用你具體欄位來寫語句建議你參考:

4樓:匿名使用者

declare @sql varchar(1000)set @sql = ''

select @sql = @sql+ a + ','

from tb

select left(@sql,len(@sql)-1)

sql 查詢 **的轉換,將列轉換成行顯示

5樓:

select sn,sum(case when field_name='bl1_ver' then field_value end) bl1_ver,

sum(case when field_name='bl2' then field_value end) bl2,

sum(case when field_name='bl3' then field_value end) bl3

from 表名

group by sn

sql 查詢出一列內容,如何讓它成一行顯示。

6樓:

--參考

select stuff((select ','+ 欄位名稱 from 表名稱 for xml path('')),1,1,'');

7樓:我是醜九怪

--case when  可以進行橫列轉換

sqlserver怎麼把查詢結果的行變成列?

8樓:清茶稀飯

sqlserver自帶得有一個stuff函式,可以結合group by 和distinct使用,可以實現行變列

sql中一對多關係的查詢結果的多行轉換成一行多列

9樓:匿名使用者

1、建立測試表,

create table test_fee(userid number, feeid number, fee number);

2、插入測試資料

insert into test_fee values(1,1001,80);

insert into test_fee values(1,1002,70);

insert into test_fee values(1,1003,90);

insert into test_fee values(1,1004,60);

insert into test_fee values(2,1001,99);

insert into test_fee values(2,1002,66);

insert into test_fee values(2,1001,55);

3、查詢表中所有記錄,select t.*, rowid from test_fee t,

4、編寫sql,按userid彙總,根據不同的feeid,進行行轉列彙總,

select userid,

sum(case when feeid = 1001 then fee else 0 end) as fee_1001,

sum(case when feeid = 1002 then fee else 0 end) as fee_1002,

sum(case when feeid = 1003 then fee else 0 end) as fee_1003,

sum(case when feeid = 1004 then fee else 0 end) as fee_1004

from test_fee t

group by userid

10樓:匿名使用者

--用動態sql實現行轉列。因用到了row_number,只適用於sql server 2005及以上版本

--測試資料

with

[user](id,name,roleid)

as(select 1,'bobo','r1' union all

select 2,'coco','r1' union all

select 3,'dodo','r1' union all

select 4,'eoeo','r2' union all

select 5,'fofo','r2'),

[role](id,name)

as(select 'r1','admin' union all

select 'r2','user')

--兩表聯合查詢後暫存入臨時表

select b.id roleid,b.name rolename,a.

name username,row_number() over (partition by b.id order by a.id) seq

into #t

from [user] a

inner join [role] b on a.roleid=b.id;

--拼接動態sql

declare @sql varchar(max);

set @sql='';

select @sql=@sql+

',max(case seq when '+cast(tt.seq as varchar)+' then username else '''' end) user'+cast(tt.seq as varchar)

from (select distinct seq from #t) tt

order by seq;

set @sql='select rolename'+@sql+' from #t group by roleid,rolename';

--列印動態sql

select @sql;

--執行動態sql

exec(@sql);

--刪除臨時表

drop table #t;

生成的動態sql為:

select rolename,

max(case seq when 1 then username else '' end) user1,

max(case seq when 2 then username else '' end) user2,

max(case seq when 3 then username else '' end) user3

from #t group by roleid,rolename

最終查詢結果為:

11樓:若水大大

select role.name, user.name from role left join [user] on role.id = user.roleid;

12樓:收費一

select 需要的列 form role a

left join user b on a.id = b.roleid

13樓:匿名使用者

這個需求好奇怪呀.

-------------------

如果有sql能寫出來你需要的那樣查詢結果, 那不是在向r1新增一條記錄就有1列了呀.這樣查出來怎麼在程式層面取值啊.

-----------------

我感覺 應該是你吧需求理解錯了吧

怎麼樣將sql查詢出來的多行資料變成一行多列

14樓:vex機器人

sql查詢結果如果只有一條,就會顯示一行,行數代表了結果數,列數的多少取決於你所查詢的欄位數。

excel怎麼把多行多列轉換成一行多列

a6 indirect text small row a 1 c 4 100 column a 1 c 4 column a1 r0c00 陣列公式向右複製 陣列公式,公式輸完後,游標放在公式編輯欄同時按下ctrl shift 回車鍵,使數回組公式生效 不論多答少行列都適用。具體看你的表了,把表的格...

怎麼將oracle的sql檔案轉換成mysql的sql檔案

oracle和mysql的sql不完全相容,如果你要從oracle把資料傳遞到mysql中去,可以用kettle這樣的etl工具進行抽取和清洗。怎麼將sql檔案匯入mysql 先開啟cmd再進入mysql的bin目錄 cd d soft wamp bin mysql mysql5.0.51b bin...

在matlab裡把一列標量怎麼轉換成向量形式?用什麼命令進行轉換

舉個例子會更明白12 34一列標量要轉為列向量則為 1 2 3 4 若為行向量可以為 1 2 3 4 1,2,3,4 不知道你問的是這個嘛!reshape 補充 一列標量的陣列就可以當成向量 在matlab中所有的標量都當陣列處理 不知道你是不是這個意思 x 1 3 y 10 14 x,y mesh...