【问题标题】:MS Access SQL: Using SELECT INTO with a UNION ALL queryMS Access SQL:将 SELECT INTO 与 UNION ALL 查询结合使用
【发布时间】:2015-09-01 09:42:31
【问题描述】:

我正在尝试将已经工作的UNION 查询转换为SELECT INTO,作为一组临时表的VBA 过程的一部分。我这样做是因为 Access 存在性能问题。

当我尝试在插入 INTO 子句的情况下运行此查询时,我收到此错误:

"An action query cannot be used as a row source."

我不完全确定为什么我不能执行它或者如何在不创建更多查询的情况下绕过它。这是什么原因造成的,我该如何解决?

SELECT DISTINCT A.*
FROM (SELECT DISTINCT
C.[CUSTOMER CODE], 
D.[FISCAL DAY], 
D.[TY INVOICE DATE] AS [Invoice Date], 
C.[CUSTOMER CODE]&" - "&D.[FISCAL DAY] AS CONCAT, 
IIF(D.[TY INVOICE DATE] Is Not Null, 'TY', Null) As TYLY

***INTO [FD CUST Missing- Temp]***

FROM [QR- CUST FD] AS C,
[QR- FD SALES] AS D) AS A

LEFT JOIN [QR- CUST FD] AS C
ON C.[FD CONCAT] = A.[CONCAT]
WHERE C.[FD CONCAT] Is Null

UNION ALL 

SELECT DISTINCT 
A.*

***INTO [FD Cust Missing- Temp]***

FROM (SELECT DISTINCT
C.[CUSTOMER CODE],
D.[FISCAL DAY],
D.[LY INVOICE DATE] AS [Invoice Date], 
C.[CUSTOMER CODE]&" - "&D.[FISCAL DAY] AS CONCAT, 
IIF(D.[LY INVOICE DATE] Is Not Null, 'LY', Null) As TYLY

FROM [QR- CUST FD] AS C,
[QR- FD SALES] AS D)  AS A

LEFT JOIN [QR- CUST FD] AS C
ON C.[FD CONCAT] = A.[CONCAT]
WHERE C.[FD CONCAT] IS NULL

;

【问题讨论】:

  • @HansUp 我不完全确定我知道你在问什么,但查询来自的基本数据不包含任何带有组合框或列表框的字段。
  • 糟糕!现在我明白了。您有 2 个 SELECT INTO 语句,您正试图将它们与 UNION 结合起来。没有骰子!制作简单的SELECT 语句并将INTO 与顶级SELECT 的结果集一起使用我不肯定Access 会接受即使这样,但请先尝试。
  • @HansUp 将 INTO 放在第一个 FROM 子句前面时出现了同样的错误 :(
  • 我不确定您的期望。 select into 是没有任何输出的东西,那么访问到底应该如何处理联合?
  • @Aツ 你能详细说明一下吗?我想保持查询现在的样子,而不是将其分成两个不同的查询,然后是 SELECT INTO 然后 INSERT INTO 我可以在两者的 UNION 中进行。也许我对功能没有任何了解。

标签: sql vba ms-access-2010 union-all select-into


【解决方案1】:

你得到了错误

动作查询不能用作行源。

因为SELECT ... INTO NewTableName FROM ... 查询是不返回结果集的操作查询(如 INSERT、UPDATE 或 DELETE 查询)。因此,UNION ALL 没有任何用处。因此,例如,这将不起作用(导致上述错误消息):

    SELECT DISTINCT LastName 
    INTO Foo 
    FROM Clients 
    WHERE LastName LIKE 'D*'
UNION ALL
    SELECT DISTINCT LastName 
    INTO Foo 
    FROM Clients 
    WHERE LastName LIKE 'T*'

但是,您可以按如下方式重新组织该查询,这确实有效:

SELECT *
INTO Foo
FROM
    (
        SELECT DISTINCT LastName 
        FROM Clients 
        WHERE LastName LIKE 'D*'
    UNION ALL
        SELECT DISTINCT LastName 
        FROM Clients 
        WHERE LastName LIKE 'T*'
    )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多