【问题标题】:How to use a table alias with a Union statement in Access?如何在 Access 中将表别名与 Union 语句一起使用?
【发布时间】:2013-08-16 01:48:47
【问题描述】:

在非透视操作中,我想要以下内容:

SELECT A, B, C FROM [complex joins/where clause] As DerivedTable
UNION
SELECT A, B, D FROM DerivedTable
UNION
SELECT A, B, E FROM DerivedTable
...

但它抱怨找不到DerivedTable(我使用派生表,因此不必一次又一次地评估[complex joins/where clause],从而减慢速度)。

我知道我可以简单地创建一个名为 DerivedTable 的新查询来表示 [complex joins/where clause] 但是

  • 上述 SQL 是从 Excel 传递的 - 我宁愿不必在运行上述 SQL 之前打开数据库来创建新查询

  • [complex joins/where clause]是动态生成的,每个用户都在变化,其中两个可能同时运行上面的SQL。

【问题讨论】:

  • 不幸的是,这不是工会的工作方式。我假设您仅限于单个查询(而不是能够输出多个 SQL 语句),那么您是否能够在所有联合中简单地输出 [complex joins/where clause] 而不仅仅是第一个?
  • [complex joins/where clause] 需要很长时间才能执行,所以理想情况下我想避免重复评估[complex joins/where clause]

标签: sql ms-access union derived-table table-alias


【解决方案1】:

类似的东西。使用 CASE 并将此表与 (1,2,3,...) 表连接。我不确定 Access 的语法是否正确,但它适用于大多数 SQL 方言。

SQLFiddle demo

SELECT A,B, 
       CASE WHEN CT.r=1 then C
            WHEN CT.r=2 then D
            WHEN CT.r=3 then E
       END

FROM [complex joins/where clause] As DerivedTable
CROSS JOIN (select 1 as r
            union all  
            select 2 as r
            union all  
            select 3 as r
           ) as CT
order by A,B

【讨论】:

    猜你喜欢
    • 2016-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-04
    • 2016-12-29
    • 1970-01-01
    相关资源
    最近更新 更多