表一
ID Name
------------------------
1 联想电脑
2 方正电脑
3 HP电脑表二
ID 表一ID NUMBER
--------------------------------------
1 1 10
2 1 10
1 1 10
1 2 10
2 2 10SQL结果如下
表二ID 联想电脑 方正电脑 HP电脑
-----------------------------------------
1 20 10 0
2 10 10 0这个SQL语句怎样写呢?在Access中可以用TROSFORM来实现,在SQL 2000中怎样来实现呢?
ID Name
------------------------
1 联想电脑
2 方正电脑
3 HP电脑表二
ID 表一ID NUMBER
--------------------------------------
1 1 10
2 1 10
1 1 10
1 2 10
2 2 10SQL结果如下
表二ID 联想电脑 方正电脑 HP电脑
-----------------------------------------
1 20 10 0
2 10 10 0这个SQL语句怎样写呢?在Access中可以用TROSFORM来实现,在SQL 2000中怎样来实现呢?
set @sql = 'select ID'
select @sql = @sql + ',sum(case 表一ID when '''+cast([ID] as varchar(10))+''' then NUMBER else 0 end) ['+[Name]+']' from 表一
select @sql = @sql+' from 表二 group by ID'exec(@sql)
go
insert #表一 values(1, '联想电脑')
insert #表一 values(2, '方正电脑')
insert #表一 values(3, 'HP电脑')create table #表二(ID int,表一ID int,NUMBER int)
insert #表二 values(1, 1 ,10)
insert #表二 values(2 , 1 ,10)
insert #表二 values(1 , 1 ,10)
insert #表二 values(1 , 2 ,10)
insert #表二 values(2 , 2 ,10)
declare @sql varchar(8000)
set @sql = 'select ID'
select @sql = @sql + ',sum(case 表一ID when '''+cast([ID] as varchar(10))+''' then NUMBER else 0 end) ['+[Name]+']' from #表一
select @sql = @sql+' from #表二 group by ID'exec(@sql)
go
as
declare @sql varchar(8000)
set @sql = 'select ID'
select @sql = @sql + ',sum(case 表一ID when '''+cast([ID] as varchar(10))+''' then NUMBER else 0 end) ['+[Name]+']' from 表一
select @sql = @sql+' from 表二 group by ID'
exec(@sql)
go---调用:exec 过程名
在Access中可以用一句语句就能实现这个,为什么在SQL中去不能实现?