0

我有一个表,我从中查询数据以使用存储过程显示结果集。我还有一个值要在 where 条件中给出,该条件对于每个单元格都在不断变化,并且该参数在我必须查询的表中不可用。到目前为止,我已经为那个特定的参数硬编码了。我的结果集应该包含 7 行和 16 列。有什么乐观的方法而不是硬编码吗?任何帮助表示赞赏。

这是我硬编码的临时表:

 create table #temp_financials(iden_val int identity(1,1) ,
     categ varchar(100),Retail_RDR varchar(100),Avg_Price_RDR varchar(100), 
             GPVR_RDR   varchar(100),
            L_RDR varchar(100),
       L_Avg_Price varchar(100),L_GPVL varchar(100),
    C_RDR varchar(100),C_Avg_Price varchar(100),C_GPVR varchar(100),
     C_Rgn_GPVR varchar(100),C_Nat_GPVR varchar(100),
       C_Lease_Penet varchar(100),C_Rgn_Penet varchar(100))

    insert into #temp_financials(categ,Retail_RDR ,Avg_Price_RDR , GPVR_RDR ,
      L_RDR ,L_Avg_Price ,L_GPVL ,
        C_RDR ,C_Avg_Price ,C_GPVR ,C_Rgn_GPVR ,C_Nat_GPVR ,
        C_Lease_Penet ,C_Rgn_Penet ) 
                 values('Ttl  Sum',             
         'B9720','B9996','B9776','B9722','B9997','B9791','B9733','B10003','B9806','B9806                 ','B9806','B9885','B9885'  )
         insert into #temp_financials(categ,Retail_RDR ,Avg_Price_RDR , GPVR_RDR ,
     L_RDR ,L_Avg_Price ,L_GPVL ,
          C_RDR ,C_Avg_Price ,C_GPVR ,C_Rgn_GPVR ,C_Nat_GPVR ,
         C_Lease_Penet ,C_Rgn_Penet ) 
                  values        ('B9870','B9773','4042A','B9998','B9788',
            'B9872','B2090','B9803','B9803','B9803','B10004','B10004')

这是我要加入的表格:

     while(@loop_var<=@count_var)
        begin

       select                  t.categ,Retail_RDR=w1.CMValue,Avg_Price_RDR=w2.CMValue,
        GPVR_RDR=w3.CMValue,L_RDR=w4.CMValue,
    from westernunion  w1 join #temp_financials t on     
    w1.acct_no=t.retail_RDR left  outer join 
        westernunion  w2 on   w2.acct_no=t.avg_price_rdr 
        left outer join westernunion  w3 on  w3.acct_no=t.GPVR_RDR   
        left outer join westernunion w4 on w4.acct_no=t.L_RDR 
        where        t.iden_val=@loop_var
             set @loop_var=@loop_var+1
          end
4

1 回答 1

0

使用动态 SQL 查询:

Declare @vQuery nvarchar(max),
        @vWhereClasue varchar(500)

SET @vQuery = 'Select top 7 col1,col2 ....col16 from ... where ' + @vWhereClasue
exec sp_executesql @vQuery
于 2012-06-22T05:56:36.250 回答