如果变量发生变化,动态向SQL查询添加变量的最佳方法

时间:2016-04-05 02:02:18

标签: sql-server dynamic-sql

所以我的情况是我在代码中动态使用某些变量,具体取决于这些变量的值。例如:

select 
    TP.TreatmentID,
    TP.ProductID,
    TP.OptimizationGroupID,
    MIN(TP.CalculatedFromText) AS CalculatedFromText,
    TP.TreatmentOrdinal,
    TP.SamplingRandomNumber,
    TP.CurrencyCode'+
    case when @Origin !='' then ' ,TP.Origin' else '' end +
    case when @Destination != '' then ' ,TP.Destination' else '' end +
    case when @fareclass='Y' THEN ' ,Fareclass' else '' end +
    case when @ispriorbooking='Y' THEN ' ,IsPriorBooking' else '' end +' 
INTO ##CalculatedFromText
FROM ##CalculatedFromTextTmp TP
GROUP BY  
    TP.TreatmentID,
    TP.ProductID, 
    TP.OptimizationGroupID,
    TP.TreatmentOrdinal,
    TP.SamplingRandomNumber,    
    TP.CurrencyCode '+
    case when @Origin !='' THEN ' ,TP.Origin' else '' end +
    case when @Destination !='' THEN ' ,TP.Origin' else '' end +
    case when @fareclass='Y' THEN ' ,TP.Fareclass' else '' end +
    case when @ispriorbooking='Y' THEN ' ,TP.IsPriorBooking' else ''
end 

这是我的代码的一部分。当我动态添加这4个变量时,很容易。但现在的目标是能够拥有一个包含任意数量变量的表来添加到这些查询中。

所以基本上我的表我希望变量from会有一个primarykey变量以及我想在主键上加入的所有变量的值

变量的数量会发生变化。

我在考虑加入表格,但不确定是否有效,因为最终我正在对按组查询包含的变量进行最大值和求和计算,但如果我加入表格,则必须包含主键不能在组子句中使用的变量。因此,我是动态添加变量而不是加入表。

是否有一种以动态方式使用表中所有变量的好方法。

我更关注解决方案的想法而非故障排除。

表格细节: 表I希望能够动态使用:

DECLARE @t TABLE(
primarykey varchar(100),
variable1 VARCHAR(100),
variable2 VARCHAR(100),
variable3 date
)
insert into @t values
('1','A','C','2015-01-01'),
('2','A','C','2015-02-01')

整个代码体的目标是计算此表提供的每组变量的销售结果。在此示例中,variable1,variable2和variable3将用于select和group by语句中的代码。

0 个答案:

没有答案