在一个不透彻的操作中,我想要以下内容:
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传递的 - 在运行上述内容之前,我不必打开数据库来创建新的查询
[complex joins/where clause]
是动态生成的,并且从用户更改为用户,其中两个可能同时运行上述SQL。
答案 0 :(得分:1)
像这样的东西。使用CASE并将此表与(1,2,3,...)表联接。我不确定它是Access的正确语法,但它适用于大多数SQL方言。
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