MSSQL將查詢結果橫向顯示

2021-04-15 22:42:32 字數 2266 閱讀 8851

表1

year_month,amount

200801 5

200802 6

200803 9

200802 4

顯示結果

year 01 02 03 tot

2008 5 0 0 5

2008 0 10 0 10

2008 0 0 9 9

2008 0 0 0 24

可能多個年,多個月

create procedure testpp as

begin

-- set nocount on added to prevent extra result sets from

-- interfering with select statements.

set nocount on;

create table testaa

(year_month int,

amount int

)insert into testaa  values (200801,5)

insert into testaa  values (200802,6)

insert into testaa  values (200803,9)

insert into testaa  values (200804,4)

declare @sql nvarchar(4000)

declare @s_st nvarchar(2)

declare @s_y nvarchar(4)

declare @s_m nvarchar(2)

declare @s_name nvarchar(300)

set @s_name=''

set @sql='create table testaa2(year1 int'

declare cc cursor for select substring(convert(nvarchar(6),year_month),5,2) from testaa group by substring(convert(nvarchar(6),year_month),5,2)

open cc

fetch next from cc into @s_st

while @@fetch_status =0

begin

set @sql=@sql+',m'+@s_st+' int default 0'

set @s_name=@s_name+'m'+@s_st+'+'

print @s_name

fetch next from cc into @s_st

endclose cc

deallocate cc

set @sql=@sql+', tot int default 0)'

print @sql

exec sp_executesql @sql

declare cc cursor for select substring(convert(nvarchar(6),year_month),1,4),substring(convert(nvarchar(6),year_month),5,2) from testaa group by year_month

open cc

fetch next from cc into @s_y,@s_m

while @@fetch_status =0

begin

set @sql='insert into testaa2 (year1,m'+@s_m+') select convert(int,substring(convert(char(6),year_month),1,4)),sum(amount) from testaa where

year_month='+@s_y+@s_m+' group by year_month'

print @sql

exec sp_executesql @sql

fetch next from cc into @s_y,@s_m

endclose cc

deallocate cc 

print @s_name

set @sql='update testaa2 set tot='+substring(@s_name,1,len(@s_name)-1)

print @sql

exec sp_executesql @sql

select * from testaa2

drop table testaa2

end

go 

oracle 將查詢結果縱向橫向顯示。

使用max decode 函式可以將將查詢結果縱向橫向顯示 例如 表 dict 編號 lxbh 型別名稱 lxmc 101 變壓器 102 斷路器 103 電磁是電壓互感器 104 電容式電壓互感器顯示變壓器 斷路器 電磁是電壓互感器 電容式電壓互感器101 102 103 104select ma...

MSSQL如何將查詢結果拼接成字串

在博問上看到乙個提問 mssql如何將查詢結果拼接成字串 想了一下應該怎麼實現呢,在c 等語言下好實現,但在sql裡實現 還真沒做過。目標 想要在sql中將查詢的結果拼接為 1 2 3 4 5 分析 要進行拼接就要取得每行的值,想到了游標可以做到。於是有了下面的方法 select name from...

plsql developer查詢結果顯示亂碼

這個問題主要是字符集造成的。以我的環境為例,oracle字符集為例 輸入sql語句select from v nls parameters檢視字符集 nls language simplified chinese nls territory china nls currency nls iso cu...