Сохранить результат пересечения в таблице

у меня есть этот запрос, чтобы получить двойники в таблице, но на другую дату:

SELECT  acf.ID , acf.ID2 , acf.CNK , acf.Omsch , acf.Groep , acf.prijs
FROM dbo.Acf_LstPrijzen acf
WHERE HstDate = '2013-12-01'
INTERSECT
SELECT  acf.ID , acf.ID2 , acf.CNK , acf.Omsch , acf.Groep , acf.Prijs
FROM dbo.Acf_LstPrijzen acf
WHERE HstDate = (SELECT MAX(acf2.hstDate) 
                         FROM dbo.Acf_LstPrijzen acf2
                         WHERE acf2.HstDate < '2013-12-01'
                         AND acf.id = acf2.id
                         GROUP BY id)

Мой вопрос: как я могу вставить этот результат в другую таблицу? Является ли это возможным?


person crodie    schedule 08.01.2014    source источник
comment
да это возможно. вставить в table_X (выбрать ..... )   -  person Ruben Verschueren    schedule 08.01.2014
comment
Дубликат этого и многих других.   -  person Zane    schedule 08.01.2014


Ответы (2)


Попробуй это...

insert into #T

    select * from
    (
    SELECT  acf.ID , acf.ID2 , acf.CNK , acf.Omsch , acf.Groep , acf.prijs
    FROM dbo.Acf_LstPrijzen acf
    WHERE HstDate = '2013-12-01'
    INTERSECT
    SELECT  acf.ID , acf.ID2 , acf.CNK , acf.Omsch , acf.Groep , acf.Prijs
    FROM dbo.Acf_LstPrijzen acf
    WHERE HstDate = (SELECT MAX(acf2.hstDate) 
                             FROM dbo.Acf_LstPrijzen acf2
                             WHERE acf2.HstDate < '2013-12-01'
                             AND acf.id = acf2.id
                             GROUP BY id)
    )
person Kishore    schedule 08.01.2014

Я бы сделал что-то вроде этого:

INSERT INTO TableName (column1,column2,column3,column4,column5,column6)
SELECT t.ID , t.ID2 , t.CNK , t.Omsch , t.Groep , t.prijs
FROM(
SELECT  t.ID , t.ID2 , t.CNK , t.Omsch , t.Groep , t.prijs
FROM dbo.t_LstPrijzen t
WHERE HstDate = '2013-12-01'
INTERSECT
SELECT  t1.ID , t1.ID2 , t1.CNK , t1.Omsch , t1.Groep , t1.Prijs,
FROM    (SELECT  ID, ID2, CNK , Omsch , Groep , Prijs,
        ROW_NUMBER() OVER(PARTITION BY id ORDER BY HstDate DESC) AS rnk
FROM dbo.t_LstPrijzen 
WHERE HstDate < '2013-12-01') t1
WHERE t1.rnk = 1 ) t
person Justin    schedule 08.01.2014