[英]Combining 2 CTEs into One Query trouble
I have a trouble with combining two CTEs.我在组合两个 CTE 时遇到了麻烦。 I need to update field_att1 and field_att2 from initial table sku_attribute.我需要从初始表 sku_attribute 更新 field_att1 和 field_att2。 Based on the cascade updating I wrote a code (below).基于级联更新,我编写了一个代码(如下)。
Can anyone advise where the problem is?谁能建议问题出在哪里? Error displays that the second CTE (z) doesn't exist.错误显示第二个 CTE (z) 不存在。
Thanks in advance.提前致谢。
with
y as
(select
s.ind, s.item_no, s.child, s.skul_no, p.parent,
a.field_att1, a.field_att2
from sku_attribute a, sku s, supp p
where a.skul_no=s.skul_no
and p.skul_no=s.skul_no
and s.ind='F'
)
,
z as
(select
s.ind, s.item_no, s.child, s.skul_no, p.parent,
a.field_att1, a.field_att2
from sku_attribute a, sku s, supp p
where a.skul_no=s.skul_no
and p.skul_no=s.skul_no
and s.ind='N'
)
Update z
set z.field_att1=y.field_att1, z.field_att2=y.field_att2,
from y
where 1=1
and z.parent=y.child
and z.ind='N'
and z.item_no=y.item_no
;
As CTE is not allow to be updated, you can consider the alternative below.由于 CTE 不允许更新,您可以考虑以下替代方案。
with y as
(
select s.ind, s.item_no, s.child, s.skul_no, p.parent, a.field_att1, a.field_att2
from sku_attribute a, sku s, supp p
where a.skul_no=s.skul_no and p.skul_no=s.skul_no and s.ind='F'
),
z as
(
select s.ind, s.item_no, s.child, s.skul_no, p.parent, a.field_att1, a.field_att2
from sku_attribute a, sku s, supp p
where a.skul_no=s.skul_no and p.skul_no=s.skul_no and s.ind='N'
),
z_update as
(
select coalesce(y.field_att1, z.field_att1) as field_att1,
coalesce(y.field_att2, z.field_att2) as field_att2
from z
left join y on z.parent=y.child and z.ind='N' and z.item_no=y.item_no
)
select * from z_update;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.