请问需要多个视图作为中间过程的存储过程怎么写比较方便?
创建第一个视图: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