【发布时间】:2018-07-24 20:24:03
【问题描述】:
我正在尝试将许多旧的 AS400 查询移植到 SQL,因为我正在开发一个 GUI,用于报告和更新来自 AS/400 中的库的记录。
这样,我遇到了一个包含很多步骤的查询,并且表的连接让我有点吃惊。
以下是我想要从 AS400 上三个物理文件中的两个文件中检索数据的查询。
select substr(clntpm,1,2) as clntwf, substr(pal#pm,1,10) as pal#wf,
substr(clsspm,1,2) as clsswf, clsqpm * 1 as clsqwf
from warpall
where locnpm <> 'ASSEMBLED PALLET'
and commpm <> 'ASSEMBLED PALLET'
and clsqpm <> 0
union all
select substr(clntpq,1,2) as clntwf, substr(pal#pq,1,10) as pal#wf,
substr(clsspq,1,2) as clsswf, clsqpq * 1 as clsqwf
from warpalq
where clsqpq <> 0
现在我想添加第三个表...据我了解,我想对上述联合的结果进行内部联接。
select * from (
<old query>
) t9
inner join t3 on <field> where t3.field = t9.field
这是我尝试过的,但显然我的语法错误,因为我收到关于 where 子句意外的错误。
谁能给点启示?
【问题讨论】:
-
您使用的是哪个 dbms? DB2?
-
union 语句中没有名为
field的列。