當前位置:首頁 » 編程語言 » sql多行變成多列
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql多行變成多列

發布時間: 2022-12-15 08:37:31

sql 如何動態多行轉多列

使用存儲過程。
方法如下:
1、先查詢出表裡面的列名稱
2、行列轉換

舉例
1、查詢student欄位名
SELECT
a.colorder as _colOrder, --欄位序號
a.name as _colName --欄位名
FROM syscolumns a left join systypes b
on a.xtype=b.xusertype
inner join sysobjects d
on a.id=d.id and d.xtype='U' and d.name<> 'dtproperties'
left join syscomments e
on a.cdefault=e.id
left join sys.extended_properties g
on a.id=g.major_id AND a.colid = g.minor_id
where d.name='student' --所要查詢的表
order by a.id,a.colorder

2、行列轉換
SELECT
MAX (CASE WHEN SetupID = 1 THEN SetupName ELSE NULL END ) AS [1],
MAX (CASE WHEN SetupID = 2 THEN SetupName ELSE NULL END ) AS [2],
MAX (CASE WHEN SetupID = 3 THEN SetupName ELSE NULL END ) AS [3],
MAX (CASE WHEN SetupID = 4 THEN SetupName ELSE NULL END ) AS [4]
......
FROM table

㈡ sql多行多列數據怎麼弄成一行多列

做個帶參數的存儲過程就行

㈢ SQL server把少列多行拼接成多列多行

SELECT[date],
MAX(CASEWHEN[id]='a'THEN[金額]ELSENULLEND)AS'a.金額',
MAX(CASEWHEN[id]='a'THEN[筆數]ELSENULLEND)AS'a.筆數',

MAX(CASEWHEN[id]='b'THEN[金額]ELSENULLEND)AS'b.金額',
MAX(CASEWHEN[id]='b'THEN[筆數]ELSENULLEND)AS'b.筆數',

MAX(CASEWHEN[id]='c'THEN[金額]ELSENULLEND)AS'c.金額',
MAX(CASEWHEN[id]='c'THEN[筆數]ELSENULLEND)AS'c.筆數',

MAX(CASEWHEN[id]='d'THEN[金額]ELSENULLEND)AS'd.金額',
MAX(CASEWHEN[id]='d'THEN[筆數]ELSENULLEND)AS'd.筆數',

MAX(CASEWHEN[id]='e'THEN[金額]ELSENULLEND)AS'e.金額',
MAX(CASEWHEN[id]='e'THEN[筆數]ELSENULLEND)AS'e.筆數'
FROM表XXXGROUPBY[date];

㈣ 怎麼樣將sql查詢出來的多行數據變成一行多列

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

㈤ sql多行多列合並成一行多列,

您好利用分析函數 sum max min 等均可實現此功能(oracle 中 空值不參與大小比較(11g是這樣的 其他版本需要你自己測試相愛))
如:
select 產品, max(標價),max(二標價),max(三標價) from table group by 產品;
或者
select 產品, sum(標價)),sum(二標價),sum(三標價) from table group by 產品;

㈥ sql 行數據轉換成多列

用存儲過程和臨時表實現吧,代碼給你了
CREATE PROCEDURE [dbo].[sp_test]
AS
BEGIN
SET NOCOUNT ON;

DECLARE @A nvarchar(50)
DECLARE @B nvarchar(200)
DECLARE @Btmp nvarchar(200)

DECLARE @charindex int

CREATE TABLE #tem
(
colA nvarchar(50) NULL,
colB nvarchar(50) NULL,
)

DECLARE curRecord CURSOR FOR
SELECT cola,colb from testtable
OPEN curRecord

FETCH NEXT FROM curRecord INTO @A,@B

WHILE @@fetch_status=0
BEGIN
SELECT @charindex=charindex(',',@B),@Btmp=@B
while (@charindex)>0
begin
insert into #tem
select @A,substring(@Btmp,1,@charindex-1)

select @Btmp=substring(@Btmp,@charindex+1,len(@Btmp))
select @charindex=charindex(',',@Btmp)
end
FETCH NEXT FROM curRecord INTO @A,@B --將游標向下移1
END

CLOSE curRecord --關閉游標
DEALLOCATE curRecord

select * from #tem

DROP TABLE #tem

END

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

1、創建測試表,

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