简体   繁体   English

使用交叉应用插入到临时表?

[英]insert into temp table using Cross Apply?

I want to create a temp table and insert values based on the select. 我想创建一个临时表并根据选择插入值。 The query doesn't execute, What am i missing ? 查询未执行,我缺少什么? I eventually want to loop thru the temp table 我最终想通过临时表循环

Create Table #temp (ID varchar(25),Source_Id varchar(25),Processed   varchar(25), Status varchar(25),Time_Interval_Min varchar(25))
Insert into #temp   
Select t.*
From
   (SELECT DISTINCT source_id 
    FROM Activity_WorkLoad) t1
    CROSS APPLY 
   (
    SELECT TOP 1
      aw.ID,
      Source_Id 
      ,Processed 
      ,Status 
      ,Time_Interval_Min
   FROM [dbSDS].[dbo].[Activity_WorkLoad] aw
   JOIN [dbSDS].[dbo].[SDA_Schedule_Time] st ON aw.SDA_Resource_ID = st.ID
   WHERE aw.Source_Id = t1.Source_Id AND aw.Status = 'Queued'
   ORDER BY Processed DESC  
   )t

When you cross apply , you still need an alias: 当您cross apply ,您仍然需要一个别名:

Insert into #temp   (id, source_id, processed, status, time_interval_min)
    Select tt.*
    From (SELECT DISTINCT source_id 
          FROM Activity_WorkLoad
         ) t CROSS APPLY 
         (SELECT TOP 1 aw.ID, Source_Id, Processed, Status, Time_Interval_Min
          FROM [dbSDS].[dbo].[Activity_WorkLoad] aw JOIN 
               [dbSDS].[dbo].[SDA_Schedule_Time] st
               ON aw.SDA_Resource_ID = st.ID
          WHERE aw.Source_Id = t.Source_Id AND aw.Status = 'Queued'
          ORDER BY Processed DESC  
        ) tt;

I also assume that you want results from the second subquery, not the first, because the first does not have enough columns. 我还假设您想要第二个子查询而不是第一个子查询的结果,因为第一个子查询没有足够的列。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM