2014-11-12 4 views
0

может помочь кто-то с этим запросом. У меня 10 строк в таблице темпаВкладка динамической переменной T-SQL

Declare @date date = '2014-11-01' 
Declare @iDate int = '20141101' 
Create table #test33(Paname varchar(100)) 
insert into #test33 

Go 

Теперь у меня есть 10 строк в таблице темп. Я хочу, чтобы вставить эти значения временных в моем КТР динамически

Declare @StartDate date = '2014-11-01' 
Declare @EndDate date = '2014-11-30' 
Declare @Paname nvarchar(100) = 'MPU' --- i have multiple panames how can i insert dyamically in cte or any other solution? 



;with pla as 
      ( SELECT* 
      FROM [dbo].[Pla] pl 
       JOIN dbo.testplan cl 
       ON pl.ClientId = cl.ClientId 
       where pl.name = @Paname 
       and pl.StartDate >= @StartDate and pl.EndDate <= @EndDate 
       ) 
    select * from pla 
+0

Вы не «вставляете» данные в CTE. У меня проблемы с пониманием того, что вы на самом деле хотите здесь – Lamak

+0

Что такое сделка с первым блоком кода? Вы создаете временную таблицу, а затем пытаетесь выбрать данные временной таблицы из только что созданной таблицы temp? Как первый блок каким-либо образом относится ко второму блоку? – Kritner

+0

Привет, Ламак, у меня есть 10 строк в моей временной таблице, вместо того, чтобы 10 раз вводить paname в переменной cte, чтобы получить мои результаты, могу ли я получить результаты динамически, чтобы вставлять один за другим? –

ответ

0

Вы можете цикл бросить несколько параметров с помощью WHILE или с помощью курсора. Внутри вы можете использовать динамический sql:

declare @DSQL varchar(MAX) 

SET @DSQL = ';with pla as 
      ( SELECT* 
        FROM [dbo].[Pla] pl 
        JOIN dbo.testplan cl 
        ON pl.ClientId = cl.ClientId 
        where pl.name = '[email protected]+' 
        and pl.StartDate >= '[email protected]+' and pl.EndDate <= '[email protected]+' 
       ) 
       select * from pla' 
EXEC(@DSQL) 
Смежные вопросы