當前位置:首頁 » 編程語言 » sql行變列

sql行變列

發布時間: 2022-09-28 03:02:12

sql語句行轉列 怎麼轉啊

--聲明變數

[email protected](1000),@num_dataint,@num_allvarchar(2000),@num_numint,@table_sqlvarchar(2000)

[email protected]_num=0

--判斷並創建表

ifexists(select*fromdbo.sysobjectswhereid=object_id(N'[dbo].[records]')andOBJECTPROPERTY(id,N'IsUserTable')=1)

droptable[dbo].[records]

createtablerecords(

[id]int,

[name]varchar(50),

[sex]varchar(10),

[num]int

)

--插入數據

insertintorecordsvalues(1,'tom','男',2)

insertintorecordsvalues(1,'tom','男',3)

insertintorecordsvalues(1,'tom','男',4)

insertintorecordsvalues(1,'tom','男',5)

--全選表中數據

select*fromrecords

--全選num列數據

selectnumas'數據'fromrecords

--釋放游標

deallocateselect_num

--為『selectnumfromrecords』建立游標

declareselect_numscrollcursorforselectnumas'shuju'fromrecords

--打開游標

openselect_num

--獲得第一條數據

[email protected]_data

[email protected]_all=convert(varchar,@num_data)+','

[email protected][email protected]_num+1;

--如果獲取成功,繼續獲得數據

[email protected]@fetch_status=0

begin

[email protected]_data

[email protected][email protected]_num+1;

[email protected][email protected]_all+convert(varchar,@num_data)+','

end

--關閉游標

closeselect_num

[email protected]_num

[email protected][email protected]_num-1;

[email protected]

[email protected]=1

[email protected]_num

[email protected]

[email protected]_sql='createtablenumall(idint,namevarchar(50),sexvarchar(10)'

[email protected]_sql

[email protected]_num>=1

begin

[email protected][email protected]_sql+',num'+convert(varchar,@i)+'int'

[email protected][email protected]_num-1;

[email protected][email protected]+1

end

[email protected][email protected]_sql+')'

[email protected]_sql

ifexists(select*fromdbo.sysobjectswhereid=object_id(N'[dbo].[numall]')andOBJECTPROPERTY(id,N'IsUserTable')=1)

droptable[dbo].[numall]

exec(@table_sql)

[email protected]_sqlvarchar(2000)

[email protected]_sql='insertintonumallvalues(1,'+'''tom'','+'''男'''

[email protected]_sql

openselect_num

--獲得第一條數據

[email protected]_data

[email protected][email protected]_sql+','+convert(varchar,@num_data)

--如果獲取成功,繼續獲得數據

[email protected]@fetch_status=0

begin

[email protected]_data

[email protected][email protected]_sql+','+convert(varchar,@num_data)

end

[email protected][email protected]_sql+')'

[email protected]_sql

exec(@insert_sql)

--insertintonumallvalues(1,'tom','男',2,3,4,5,5)

select*fromnumall

試試吧,數據雖然有點出入,但已經說明問題了!!!

Ⅱ sql錶行到列的轉換

鑒於你已經新建好下面的表了 被我稱為tableB的表 前面的原始表稱為tableA 那就開始吧
truncate table tableB ---清空tableB的數據先
insert into tableB
(StuCJID,XXBH,語文, 數學, 英語 ,政治)
select StuCJID,XXBH,Score,0,0,0
from tableA where KeCheng='語文' ---把A裡面所有語文的記錄都插入到B

update a set a.數學=b.Score from tableB a left join tableA b on a.XXBH=b.XXBH
where b.KeCheng='數學' ---對應更新B的數學和A同一個XXBH的人一致
update a set a.英語=b.Score from tableB a left join tableA b on a.XXBH=b.XXBH
where b.KeCheng='英語' ---對應更新B的英語和A同一個XXBH的人一致
update a set a.政治=b.Score from tableB a left join tableA b on a.XXBH=b.XXBH
where b.KeCheng='政治'---對應更新B的政治和A同一個XXBH的人一致

select * from tableB order by XXBH ---查詢結果

Ⅲ sql 行變成列

看不懂。。
查詢結果:
--------
帳號 人民幣 美元 歐元
LZ 10000 10000 100000
我 20000 200000 200000

LZ要變成
帳號 LZ 我
人民幣 10000 20000
美元 10000 200000
歐元 100000 200000

這樣子?

Ⅳ sql怎樣將行的值變為列,,,,

方法/步驟

  • 首先我們建立一張表,名為RToC,各個欄位的設計如下圖,分別是name,course,score,表示姓名,成績與分數,如圖所示。

  • 通過以上幾個步驟,我們就可以輕松的實現行列轉換了。同樣,我們如果要把列轉換成行, 應該怎麼做呢?同樣我們可以採用unpivot函數輕松實現。

Ⅳ 怎樣實現sql行轉列

--試一試。。。

createtable#test
(
姓名nvarchar(10),
學號nvarchar(10),
題號nvarchar(10),
答案nvarchar(10)
)
go
insertinto#test
select'張三','001','1','A'unionall
select'張三','001','2','C'unionall
select'李四','002','1','B'unionall
select'李四','002','2','D'

select*from#test

[email protected](max)
[email protected]=''
[email protected][email protected]+',['+題號+']'FROM#testGROUPBY題號
[email protected]=STUFF(@sql,1,1,'')
[email protected]='select*from#testpivot(max(答案)for題號in('[email protected]+'))a'
[email protected]
exec(@sql)

Ⅵ SQL中幾種行變列的情況

有兩種方式:

sql行列轉換

1 case when

2 pivot 函數

請試一試,如有疑問,及時溝通!

Ⅶ sql行轉列

SELECT e.NAME as name,
count(case when DATEPART(year,c.START_TIME)=2014 then 1 else null end ) as count2014,
count(case when DATEPART(year,c.START_TIME)=2015 then 1 else null end ) as count2015
from ENVI_DATA_STATISTIC_COMP c
LEFT JOIN ENVI_CITY e on e.CITY_ID=c.CITY_ID
where c.COMP_NAME like '%藍天白雲%' and INDEX_TYPE='12'
and (c.START_TIME like '%2014-08%' or c.START_TIME like '%2015-08%' ) and STATISTIC_TYPE='1' and c.VALID_FLAG='1'
group by name

應該是醬紫的,使用case when 轉換~

Ⅷ sql 行變成列

[email protected](4000)
[email protected]=isnull(@s+',','')+quotename(Name)
fromsyscolumnswhereID=object_id('aa')
orderbyColid
exec('selectid,namefromaaunpivot(nameforidin('[email protected]+'))b')

如圖:

Ⅸ sql 行轉列

SELECT
*
FROM ( 你的SQL 放在這裡面
) bb PIVOT( MAX(timePoint) FOR PName( [pm2.5], [nox], [.....] ) ) AS pvt

[pm2.5],這種你有一個要列一個。

Ⅹ SQL語句行轉列

根據樓主的描述,特為樓主總結如下,在SqlServer裡面行列轉換的語法一般是: select 欄位, sum(case when 要轉換的行單元格的欄位名='行欄位內容' then 聚合的欄位名 end ) as 自定義的列標題1 from 表的名字 group by 欄位(注意,分組聚合就是根據這個欄位來的,具體到樓主的問題,這里的欄位就應該是org_id) 如果有多個列,之間用逗號隔開就可以了,最後一個參數和from之間不要用逗號。 具體到樓主的顯示效果就可以這樣寫了。代碼參考如下: Select org_id , sum(case when channel ='團險' then PREM end) As '團險保費' , sum(case when channel ='個險' then PREM end) As '個險保費 From 你的表名 Group By org_id

熱點內容
java中文處理 發布:2022-12-08 23:16:53 瀏覽:700
cache緩存c 發布:2022-12-08 23:15:23 瀏覽:264
布卡雲電腦方舟伺服器是什麼 發布:2022-12-08 23:15:15 瀏覽:719
簡易編程機器人 發布:2022-12-08 23:05:32 瀏覽:784
優酷密碼對的怎麼 發布:2022-12-08 22:53:34 瀏覽:439
斑馬系統需要哪些配置 發布:2022-12-08 22:52:20 瀏覽:433
安卓fc模擬器怎麼用 發布:2022-12-08 22:51:16 瀏覽:771
centos7的伺服器怎麼配ip 發布:2022-12-08 22:47:40 瀏覽:783
7z的極限壓縮 發布:2022-12-08 22:47:38 瀏覽:412
地圖上地理坐標演算法 發布:2022-12-08 22:47:36 瀏覽:370