2015-01-15 2 views
0

У меня есть 2 CTE. Оба они выбирают для меня некоторые записи. один из них X, а другой - Y. в другой руке у меня есть 2 таблицы темпа с тем же именем, что и CTE. Я хочу заполнить эту временную таблицу с помощью CTE Result. и в конце концов я хочу показать эту таблицу темпа в одном результате. моя проблема заключается в том, что я просто не могу использовать источник данных CTE только один раз здесь мой кодЗаполнить таблицу Temp с помощью CTE Resut?

 use fidilio 
;WITH Fidili_CTE1X (FirstName,LastName,SubscribedDate, RegisteredDate, pers) 
AS 
(
SELECT 
FirstName,LastName,SubscribedDate, RegisteredDate,dbo.GetShDate(RegisteredDate) as pers 
FROM ClubProfile CP 
WHERE CP.CardNumber IS NOT NULL 
AND IsExpired =0 
) 

SELECT LastName,pers FROM Fidili_CTE1X 
    CREATE TABLE #TEMPX 
(
     Lastname nvarchar(max) ,pers varchar(10) 
) 
Insert into #TEMPX 
select * from Fidili_CTE1X 
;WITH FIDILIO_CTE2Y(irstName,LastName,SubscribedDate, RegisteredDate,PERS) 
AS 
(
    SELECT 
FirstName,LastName,SubscribedDate, RegisteredDate,dbo.GetShDate(RegisteredDate) as pers 
FROM ClubProfile CP 
WHERE CP.CardNumber IS NOT NULL 
) 


SELECT LASTNAME,PERS FROM FIDILIO_CTE2Y 

CREATE TABLE #TEMPY 
(
Lastname nvarchar(max) ,pers varchar(10) 
) 
Insert into #TEMPY 
select * from FIDILIO_CTE2Y 
+0

'; С cte1 AS (SELECT ...), cte2 AS (SELECT ...) SELECT col1, col2 INTO #x FROM (SELECT col1, col2 FROM cte1 UNION ALL SELECT, col1, col2 FROM cte2) AS x; ' –

+0

, если вы видите мой код, я использовал этот метод, но проблема в том, что он не распознает мой источник данных cte – salar

+0

Не могли бы вы исправить мой код? – salar

ответ

0

Используйте этот

use fidilio 
;WITH Fidili_CTE1X (FirstName,LastName,SubscribedDate, RegisteredDate, pers) 
AS 
(
SELECT 
FirstName,LastName,SubscribedDate, RegisteredDate,dbo.GetShDate(RegisteredDate) as pers 
FROM ClubProfile CP 
WHERE CP.CardNumber IS NOT NULL 
AND IsExpired =0 
) 

SELECT LastName,pers into #TEMPX FROM Fidili_CTE1X 

;WITH FIDILIO_CTE2Y(irstName,LastName,SubscribedDate, RegisteredDate,PERS) 
AS 
(
    SELECT 
FirstName,LastName,SubscribedDate, RegisteredDate,dbo.GetShDate(RegisteredDate) as pers 
FROM ClubProfile CP 
WHERE CP.CardNumber IS NOT NULL 
) 
SELECT LASTNAME,PERS into #TEMPY FROM FIDILIO_CTE2Y 

select * from FIDILIO_CTE2Y 
+0

Большое спасибо sir – salar

+0

Серьезно? Вы просто хотели, чтобы кто-то выполнил вашу работу за вас? Этот код дерьмовый. STILL полный ошибок. Он создает временную таблицу с некоторыми данными в ней, но затем в конце она выбирает некоторые ДРУГИЕ данные? – Jasmine

+0

@salar добро пожаловать :). – Mohammed

1

Я думаю, ваше недоразумение здесь является то, что, CTE не ВЫБРАТЬ никаких данных. Они создают таблицу. Вы должны взаимодействовать с этой таблицей так же, как и в любой другой таблице.

Однако ваш сценарий намного сложнее, чем нужно. В чем проблема с этим?

SELECT FirstName,LastName,SubscribedDate, RegisteredDate,dbo.GetShDate(RegisteredDate) as pers 
INTO #TEMPY 
FROM ClubProfile CP 
WHERE CP.CardNumber IS NOT NULL 

Это имеет тот же результат, что и ваш скрипт, за исключением того, что я не могу сказать, какие столбцы вы действительно хотите из-за ошибок в скрипте.

+0

Кроме того, этот ответ неверен. Это действительно так. Невозможно сказать, что вы действительно хотите в выходе, потому что вы не описали его на английском языке, или в SQL. Ответ выше загружает данные в временную таблицу, но выводит некоторые другие данные из другого места. Это не может быть то, что вы хотите - вы создаете временные данные и НЕ ИСПОЛЬЗУЕТЕ это ?! – Jasmine

Смежные вопросы