34,594
社区成员
发帖
与我相关
我的任务
分享
create procedure Gettest
@UserID int,
@ProductID int
as
begin
select a.WriteTime,b.Area,b.Price into #
from ProductPrice a left join ProductPriceInfo b on a.ProductID = b.ProductPriceID
where a.UserID=@UserID and a.ProductID = @ProductID
declare @sql varchar(8000)
set @sql = 'select WriteTime'
select @sql = @sql + ',' + Area+'=sum(case area when ''' + Area+ ''' then Price else 0 end )'
from # group by Area order by Area
set @sql = @sql + ' from # group by WriteTime'
exec(@sql)
end
go
--测试
exec Gettest 1,2
go
--删除测试
drop table ProductPrice
drop table ProductPriceInfo
drop proc Gettest
WriteTime 杭州 上海
----------------------- ----------- -----------
2007-12-05 00:00:00.000 40 20
create table ProductPrice (ProductPriceID int,UserID int,ProductID int, WriteTime datetime)
insert into ProductPrice select 1,1,1,'2007-12-6'
insert into ProductPrice select 2,1,1,'2007-12-7'
insert into ProductPrice select 3,2,1,'2007-12-7'
insert into ProductPrice select 4,1,2,'2007-12-5'
create table ProductPriceInfo (ProductPriceID int,Area nvarchar(10),Price int)
insert into ProductPriceInfo select 1,'杭州',10
insert into ProductPriceInfo select 1,'上海',20
insert into ProductPriceInfo select 2,'杭州',40
insert into ProductPriceInfo select 2,'上海',20
create procedure Gettest
@UserID int
@ProductID int
as
begin
select a.writetime,b.Area,b,Price into #
from t1 a left join t2 b on a.ProdeuctID = b.ProductPriceID
where UserID=@UserID and ProductID = @ProductID
declare @sql varchar(8000)
set @sql = 'select writetime'
select @sql = @sql + ',' + area+'=sum(case area when ''' + area+ ''' then price else 0 end )'
from # group by area order by area
set @sql = @sql + ' from # group by writetime'
end
create table pro(writetime datetime,area nvarchar(10),price int)
insert into pro select '2007-12-6','杭州',30
insert into pro select '2007-12-6','杭州',130
insert into pro select '2007-12-7','上海',20
insert into pro select '2007-12-7','上海',13
declare @sql varchar(8000)
set @sql = 'select writetime'
select @sql = @sql + ',' + area+ '=sum(case area when ''' + area+ ''' then price else 0 end)'
from pro group by area order by area
set @sql = @sql + ' from pro group by writetime'
exec(@sql)
writetime 杭州 上海
----------------------- ----------- -----------
2007-12-06 00:00:00.000 160 0
2007-12-07 00:00:00.000 0 33