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 に答える