读书人

请教需要多个视图作为中间过程的存储过

发布时间: 2012-02-08 19:52:21 作者: rapoo

请问需要多个视图作为中间过程的存储过程怎么写比较方便?
创建第一个视图:aaa
SELECT DISTINCT TOP 100 PERCENT 事件号, 结果
FROM dbo.工作表

在aaa基础上创建第二个视图:bbb
SELECT 结果, LEFT(事件号, 4) AS 前四位, RIGHT(事件号, 1) AS 末位
FROM dbo.aaa

以视图bbb 为基础 创建存储过程:
declare @sql varchar(8000)
set @sql = 'select 前四位 '
select @sql = @sql + ',sum(case 末位 when ' ' '+末位+ ' ' ' then 结果 end) [ '+末位+ '] '
from (select distinct 末位 from bbb) as a
select @sql = @sql+ ' from bbb group by 前四位 '
exec(@sql)

上面过程需要创建2个视图作为中间过程,不用视图改用临时表也可以完成,但性能可能会差点,大家说用哪种好?或者有更好的办法?

[解决办法]
建不要用,直接用存程就行了(面可以用表)

[解决办法]
你的只是在存程部用,得什必要,可以直接建一表

--建表#T
SELECT DISTINCT 结果, LEFT(事件号, 4) AS 前四位, RIGHT(事件号, 1) AS 末位 Into #T
FROM dbo.工作表

--以表 为基础 创建存储过程:
declare @sql varchar(8000)
set @sql = 'select 前四位 '
select @sql = @sql + ',sum(case 末位 when ' ' '+末位+ ' ' ' then 结果 end) [ '+末位+ '] '
from #T Group By 末位
select @sql = @sql+ ' from #T group by 前四位 '
exec(@sql)

--除表
Drop Table #T

读书人网 >SQL Server

热点推荐