繁体   English   中英

INSERT INTO-在Values子查询中引用外部表

[英]INSERT INTO - Reference outer table in Values subquery

我不太擅长子查询。 我试图通过从另一个表中选择某些值来本质上创建列,然后将这些列插入到我的表中[摘要7/24。 上午]。 事情是在我的select子查询中以生成要插入的值,我引用了表的工作站列[Presummary 7/24。 上午]。 我认为Access SQL表示不允许这样做,但是我不确定如何解决。

这是我的查询(由我编写的VBA函数生成):

INSERT INTO [Presummary 7/24/2014 11:07:33 AM] (660201, 660202, 660203, 660206, 660207, 660208, 660209) 
VALUES (
     SELECT h.SumOFHRS_Claimed FROM [qry EngineHoursSummaryA] as h WHERE Right(h.MODULE_ENGINE_SWO_SERIAL,6) = '660201' AND [Presummary 7/24/2014 11:01:44 AM].workstation = h.WORKSTATION, 
     SELECT h.SumOFHRS_Claimed FROM [qry EngineHoursSummaryA] as h WHERE Right(h.MODULE_ENGINE_SWO_SERIAL,6) = '660202' AND [Presummary 7/24/2014 11:01:44 AM].workstation = h.WORKSTATION, 
     SELECT h.SumOFHRS_Claimed FROM [qry EngineHoursSummaryA] as h WHERE Right(h.MODULE_ENGINE_SWO_SERIAL,6) = '660203' AND [Presummary 7/24/2014 11:01:44 AM].workstation = h.WORKSTATION, 
     SELECT h.SumOFHRS_Claimed FROM [qry EngineHoursSummaryA] as h WHERE Right(h.MODULE_ENGINE_SWO_SERIAL,6) = '660206' AND [Presummary 7/24/2014 11:01:44 AM].workstation = h.WORKSTATION, 
     SELECT h.SumOFHRS_Claimed FROM [qry EngineHoursSummaryA] as h WHERE Right(h.MODULE_ENGINE_SWO_SERIAL,6) = '660207' AND [Presummary 7/24/2014 11:01:44 AM].workstation = h.WORKSTATION, 
     SELECT h.SumOFHRS_Claimed FROM [qry EngineHoursSummaryA] as h WHERE Right(h.MODULE_ENGINE_SWO_SERIAL,6) = '660208' AND [Presummary 7/24/2014 11:01:44 AM].workstation = h.WORKSTATION, 
     SELECT h.SumOFHRS_Claimed FROM [qry EngineHoursSummaryA] as h WHERE Right(h.MODULE_ENGINE_SWO_SERIAL,6) = '660209' AND [Presummary 7/24/2014 11:01:44 AM].workstation = h.WORKSTATION
)

当我尝试运行此代码时,它会显示“查询表达式'SELECT h.sumOFHRS_CLA .... worker = h.WORKSTATION中的语法错误”。 (它仅引用第一个子查询,但是我确定在所有子查询中都将应用相同的错误)。

以下内容也不起作用:

INSERT INTO [Presummary 7/24/2014 11:07:33 AM] (660201, 660202, 660203, 660206, 660207, 660208, 660209) 
VALUES (
     SELECT h1.SumOFHRS_Claimed FROM [qry EngineHoursSummaryA] as h1, 
     SELECT h2.SumOFHRS_Claimed FROM [qry EngineHoursSummaryA] as h2, 
     SELECT h3.SumOFHRS_Claimed FROM [qry EngineHoursSummaryA] as h3, 
     SELECT h4.SumOFHRS_Claimed FROM [qry EngineHoursSummaryA] as h4, 
     SELECT h5.SumOFHRS_Claimed FROM [qry EngineHoursSummaryA] as h5, 
     SELECT h6.SumOFHRS_Claimed FROM [qry EngineHoursSummaryA] as h6, 
     SELECT h7.SumOFHRS_Claimed FROM [qry EngineHoursSummaryA] as h7
)

WHERE Right(h.MODULE_ENGINE_SWO_SERIAL,6) = '660201' AND [Presummary 7/24/2014 11:01:44 AM].workstation = h1.WORKSTATION
AND Right(h.MODULE_ENGINE_SWO_SERIAL,6) = '660202' AND [Presummary 7/24/2014 11:01:44 AM].workstation = h2.WORKSTATION
AND Right(h.MODULE_ENGINE_SWO_SERIAL,6) = '660203' AND [Presummary 7/24/2014 11:01:44 AM].workstation = h3.WORKSTATION
AND Right(h.MODULE_ENGINE_SWO_SERIAL,6) = '660206' AND [Presummary 7/24/2014 11:01:44 AM].workstation = h4.WORKSTATION
AND Right(h.MODULE_ENGINE_SWO_SERIAL,6) = '660207' AND [Presummary 7/24/2014 11:01:44 AM].workstation = h5.WORKSTATION
AND Right(h.MODULE_ENGINE_SWO_SERIAL,6) = '660208' AND [Presummary 7/24/2014 11:01:44 AM].workstation = h6.WORKSTATION
AND Right(h.MODULE_ENGINE_SWO_SERIAL,6) = '660209' AND [Presummary 7/24/2014 11:01:44 AM].workstation = h7.WORKSTATION

如何从查询中获得想要的结果?

尝试使用INSERT INTO tablename (column1, column2...) SELECT column1, column2.. FROM tablename1 WHERE conditions

试试这个代码,

INSERT INTO [Presummary 7/24/2014 11:07:33 AM] (660201, 660202, 660203, 660206, 660207, 660208, 660209) 
SELECT Sum(IIF(Right([qry EngineHoursSummaryA].MODULE_ENGINE_SWO_SERIAL,6) = '660201', [qry EngineHoursSummaryA].SumOFHRS_Claimed, 0)) As E1, 
       Sum(IIF(Right([qry EngineHoursSummaryA].MODULE_ENGINE_SWO_SERIAL,6) = '660202', [qry EngineHoursSummaryA].SumOFHRS_Claimed, 0)) As E2, 
       Sum(IIF(Right([qry EngineHoursSummaryA].MODULE_ENGINE_SWO_SERIAL,6) = '660203', [qry EngineHoursSummaryA].SumOFHRS_Claimed, 0)) As E3, 
       Sum(IIF(Right([qry EngineHoursSummaryA].MODULE_ENGINE_SWO_SERIAL,6) = '660206', [qry EngineHoursSummaryA].SumOFHRS_Claimed, 0)) As E4, 
       Sum(IIF(Right([qry EngineHoursSummaryA].MODULE_ENGINE_SWO_SERIAL,6) = '660207', [qry EngineHoursSummaryA].SumOFHRS_Claimed, 0)) As E5, 
       Sum(IIF(Right([qry EngineHoursSummaryA].MODULE_ENGINE_SWO_SERIAL,6) = '660208', [qry EngineHoursSummaryA].SumOFHRS_Claimed, 0)) As E6, 
       Sum(IIF(Right([qry EngineHoursSummaryA].MODULE_ENGINE_SWO_SERIAL,6) = '660209', [qry EngineHoursSummaryA].SumOFHRS_Claimed, 0)) As E7
FROM [Presummary 7/24/2014 11:07:33 AM] INNER JOIN [qry EngineHoursSummaryA] ON [Presummary 7/24/2014 11:01:44 AM].workstation = [qry EngineHoursSummaryA].WORKSTATION;

从未弄清楚语法错误的真正原因。 但是无论如何,我意识到我需要做的是使用UPDATE而不是INSERT语句。

暂无
暂无

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

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