怎样保存动态SQL (EXEC)的结果为变量,然后调用。
例如下动态SQL (EXEC)语句:
DECLARE @table varchar(50) = 'table1'
DECLARE @condition varchar(500) =
DECLARE @sql varchar(3000) = '
select top 1 (PERCENTILE_DISC(0.60) WITHIN GROUP (ORDER BY [time]) OVER () ) AS [P60]
(select avg([time]) from @table) as AVG
from @table where @where
'
PRINT '2014'
SET @where = '[year]=''2014'''
SET @run = REPLACE(REPLACE(@sql, '@table', ''+@table+''), '@where', ''+@where+'')
EXEC(@run)
PRINT '2015'
SET @where = '[year]=''2015'''
SET @run = REPLACE(REPLACE(@sql, '@table', ''+@table+''), '@where', ''+@where+'')
EXEC(@run)
PRINT '2014*2+2015*3 P60'
--现在需要一个办法“保存” 2014 和 2015 年的P60的值,当所有计算(2014/2015)完毕后,总结做如下运算:2014(P60)*2 + 2015(P60)*3
这只是一个例子,问题的核心是保存动态SQL (EXEC)的结果为变量,然后调用。
DECLARE @table varchar(50) = 'table1'
DECLARE @condition varchar(500) =
DECLARE @sql varchar(3000) = '
select top 1 (PERCENTILE_DISC(0.60) WITHIN GROUP (ORDER BY [time]) OVER () ) AS [P60]
(select avg([time]) from @table) as AVG
from @table where @where
'
PRINT '2014'
SET @where = '[year]=''2014'''
SET @run = REPLACE(REPLACE(@sql, '@table', ''+@table+''), '@where', ''+@where+'')
EXEC(@run)
PRINT '2015'
SET @where = '[year]=''2015'''
SET @run = REPLACE(REPLACE(@sql, '@table', ''+@table+''), '@where', ''+@where+'')
EXEC(@run)
PRINT '2014*2+2015*3 P60'
--现在需要一个办法“保存” 2014 和 2015 年的P60的值,当所有计算(2014/2015)完毕后,总结做如下运算:2014(P60)*2 + 2015(P60)*3
这只是一个例子,问题的核心是保存动态SQL (EXEC)的结果为变量,然后调用。
...全文


