/*參考 愛新覺羅.毓華
時間 值
2009-01-01 90
2009-01-02 99
2009-02-01 95
得到如下結果:
mycol 200901 200902
----- ------- -------
mycol 189 95
---------------------
*/create table #mytb(time datetime,value float)
insert into #mytb values('2009-01-01',90)
insert into #mytb values('2009-01-05',80)
insert into #mytb values('2009-02-01',90)
insert into #mytb values('2009-03-01',88)
insert into #mytb values('2009-04-01',91)
insert into #mytb values('2009-05-01',92)
insert into #mytb values('2009-06-01',95)
insert into #mytb values('2009-07-01',97)
insert into #mytb values('2009-08-01',99)
insert into #mytb values('2009-09-01',86)
insert into #mytb values('2009-10-01',85)
insert into #mytb values('2009-11-01',88)
insert into #mytb values('2009-12-01',87)
insert into #mytb values('2009-12-01',80)
insert into #mytb values('2009-02-01',89)
--建立臨時表
create table #tb(yyyymm varchar(6),value float,mycol varchar(5))
insert into #tb select year(time)*100+month(time),value,'mycol' from #mytb
--動態實現行轉成列
declare @sql varchar(8000)
set @sql='select mycol '
select @sql=@sql+','+quotename(yyyymm)+'=sum(case yyyymm when '''+yyyymm+''' then value else 0 end)'
from (select distinct(yyyymm) from #tb) a
exec(@sql+' from #tb group by mycol')
--靜態實現
select
sum(case when yyyymm='200901' then value else 0 end) '一月',
sum(case when yyyymm='200902' then value else 0 end) '二月',
sum(case when yyyymm='200903' then value else 0 end) '三月',
sum(case when yyyymm='200904' then value else 0 end) '四月',
sum(case when yyyymm='200905' then value else 0 end) '五月',
sum(case when yyyymm='200906' then value else 0 end) '六月',
sum(case when yyyymm='200907' then value else 0 end) '七月',
sum(case when yyyymm='200908' then value else 0 end) '八月',
sum(case when yyyymm='200909' then value else 0 end) '九月',
sum(case when yyyymm='200910' then value else 0 end) '十月',
sum(case when yyyymm='200911' then value else 0 end) '11月',
sum(case when yyyymm='200912' then value else 0 end) '12月'
from #tb
drop table #mytb
drop table #tb
SQL2005語句實現行轉列,列轉行
在做報表時,經常需要將資料表中的行轉列,或者列轉行,如果不知道方法,你會覺得通過sql語句來實現非常難。這裡,我將使用pivot和unpivot來實現看似複雜的功能。這個功能在sql2005及以上版本才有。引用msdn 可以使用 pivot 和 unpivot 關係運算子將表值表示式更改為另乙個表。...
SQL2005語句實現行轉列,列轉行
在做報表時,經常需要將資料表中的行轉列,或者列轉行,如果不知道方法,你會覺得通過sql語句來實現非常難。這裡,我將使用pivot和unpivot來實現看似複雜的功能。這個功能在sql2005及以上版本才有。引用msdn 可以使用 pivot 和 unpivot 關係運算子將表值表示式更改為另乙個表。...
SQL2005的資料轉成SQL2000
直接restore或附加應該是不行的,用指令碼 導資料肯定沒有問題。2005轉到2000的步驟 1.生成for 2000版本的資料庫指令碼 2005 的manger studio 開啟 物件資源管理器 沒有的話按f8 連線到你的例項 右鍵要轉到2000的庫 任務 生成指令碼 在 指令碼嚮導 的 選擇...