[英]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.