Sql server 在变量发生变化时,向SQL查询动态添加变量的最佳方法

Sql server 在变量发生变化时,向SQL查询动态添加变量的最佳方法,sql-server,dynamic-sql,Sql Server,Dynamic Sql,因此,我有一种情况,我在代码中动态地使用某些变量,这取决于这些变量的值。例如: select TP.TreatmentID, TP.ProductID, TP.OptimizationGroupID, MIN(TP.CalculatedFromText) AS CalculatedFromText, TP.TreatmentOrdinal, TP.SamplingRandomNumber, TP.CurrencyCode'+ ca

因此,我有一种情况,我在代码中动态地使用某些变量,这取决于这些变量的值。例如:

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个变量时,这很容易。但是现在的目标是能够有一个包含任意数量的变量的表来添加到这些查询中

因此,基本上,我希望变量来自的表将有一个primarykey变量,以及我希望在primarykey上连接的所有变量的值

变量的数量将发生变化

我想加入表中,但不确定这是否有效,因为最终我会对group by查询中包含的变量进行max和sum计算,但如果我加入表中,它必然会包含group子句中无法使用的primarykey变量。因此,我动态地添加变量,而不是在表上连接

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

我更关注解决方案的想法,而不是故障排除

表1详细信息: 我希望能够动态使用的表:

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语句中的代码中使用

也许可以做您正在尝试的事情,但似乎您已经超出了t-sql的最佳范围。用另一种语言解决这个问题可能更好。在SSAS中显示基于动态参数的聚合可能更好。如果您可以构建一些东西来实现这一点(即动态SQL),那么您将有几个问题:1。防止SQL注入;2.预测现在不存在的未来变量的功能。3.演出