表1create procedure testpp asyear_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
可能多個年,多個月
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...