Как вставить записи в temptable, который имеет; с командой в sql? - PullRequest
1 голос
/ 05 июня 2019

Я создал временную таблицу, которую я хочу заполнить записями.

Вот мой запрос:

create table #temp(companysitetankid int, [SourceGradeName] varchar(50), SiteCode varchar(50));

;with cst  as (
    select companysitetankid,[SourceGradeName], SiteCode,
           row_number() over (partition by [SourceGradeName] order by [TankNumber] ) rn
    from [DataManagement_DB].[dbo].[CompanySiteTank]  where CompanyCode='Aaaa'
 )
 select * from cst where  rn >1

 insert into #temp
 select companysitetankid,[SourceGradeName], SiteCode from cst  

Здесь я получаю таблицу cst Invalid.

Неверное имя объекта 'cst'.

Что я делаю не так в приведенном выше запросе?

Ответы [ 2 ]

3 голосов
/ 05 июня 2019

Как только ваш CTE с псевдонимом cst был использован в операторе SELECT, он больше не может быть использован.Это может быть то, что вы намеревались сделать:

WITH cst AS (
    SELECT companysitetankid, [SourceGradeName], SiteCode,
       ROW_NUMBER() OVER (PARTITION BY [SourceGradeName] ORDER BY [TankNumber]) rn
    FROM [DataManagement_DB].[dbo].[CompanySiteTank]
    WHERE CompanyCode = 'Aaaa'
)

INSERT INTO #temp
SELECT companysitetankid, [SourceGradeName], SiteCode
FROM cst
WHERE rn > 1;

Если вам действительно нужно запустить этот выбор, чтобы проверить, что возвращается, затем запустите его сбоку, но удалите его, когда вы фактически используете его ввставить.

1 голос
/ 05 июня 2019

Вы делаете все это в одном утверждении:

with cst as (
      select companysitetankid, [SourceGradeName], SiteCode,
             row_number() over (partition by [SourceGradeName] order by [TankNumber] ) rn
      from [DataManagement_DB].[dbo].[CompanySiteTank]
      where CompanyCode='Aaaa'
     )
insert into #temp
    select companysitetankid,[SourceGradeName], SiteCode 
    from cst  
    where rn > 1;

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...