0

Могу ли я сделать это:Можете ли вы использовать инструкцию SELECT INTO с CTE, которая содержит UDF?

With ZipCodeCTE as 
      { 
      select nvl(HH.GeoUSZip5 , **ZipCodeKeyLookUp**(HH.[CityName],HH.[StateName])) as TotalZipCode 
      from ODSDataArchive.archive.HHJob_Data_201202 HH 
      } 
    /* This Is a SELECT INTO statement that inserts 
     data into [Jobs].[dbo].[FactRPP]*/ 
    SELECT [dbo].[FactJobsDaily].jobdid, 
      [dbo].[FactJobsDaily].DateKey, 
      [dbo].[FactJobsDaily].YearMonth, 
      [dbo].[FactJobsDaily].AccountKey, 
      [dbo].[FactJobsDaily].BridgeSocKey, 
      [dbo].[FactJobsDaily].HostSiteKey, 
      [dbo].[FactJobsDaily].JobClickedCount, 
      [dbo].[FactJobsDaily].JobResultsPageCount, 
      (select DZ.ZipCodeKey 
       from dimensions.dbo.DimZipCode DZ 
       where DZ.ZipCodeKey IN 
           (Select CAST(TotalZipCode AS INT) 
           from ZipCodeCTE)) 
     INTO [Jobs].[dbo].[FactRPP]         
     from dbo.FactJobsDaily 
      inner join ODSDataArchive.archive.HHJob_Data_201202 
        on dbo.FactJobsDaily.JobDID = ODSDataArchive.archive.HHJob_Data_201202.DID 
        and dbo.FactJobsDaily.datekey = ODSDataArchive.archive.HHJob_Data_201202.datekey 
      inner join dimensions.dbo.Dimzipcode dzc 
        on ODSDataArchive.archive.HHJob_Data_201202.geoUSZip5 = dimensions.dbo.Dimzipcode.ZipCode 
    where [dbo].[FactJobsDaily].yearmonth= 201202 
      and [dbo].[FactJobsDaily].isactivekey = 1 
     -- and ODSDataArchive.archive.HHJob_Data_201202.geoUSZip5 <> '' 
     -- and ODSDataArchive.archive.HHJob_Data_201202.geoUSZip5 IS NOT NULL 
      and ODSDataArchive.archive.HHJob_Data_201202.status = 0 
      and ODSDataArchive.archive.HHJob_Data_201202.CountryName = 'US' 
    order by [dbo].[FactJobsDaily].jobdid; 
+0

Что произойдет, если вы попробуете его в тестовой системе баз данных? – JonH

+0

Что мешает вам попробовать это? –

ответ

1

Поскольку CTE переводится в обычный запрос короткий ответ да.

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