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...