更新条款的问题
Issue with the update cluase
我在更新条款中遇到了一个问题。我正在尝试执行以下操作:
update AM1 from DB.AM_7541 AM1,
(sel distinct TRIM(SB.LCDBDN) NEID, trim( leading '0' from sb.lcdmno) LCDMNO,
AM.Netw_equip
from
DB1.PLTL SB
inner join DB.AM_7541 AM
on trim( leading '0' from sb.lcdmno)=AM.accs_meth_num
where SB.LOAD_DATE in ( sel max(load_date),lcdmno,lcdbdn from DB1.PLTL where lcdmno not like ' ' and lcdmno is not null group by lcdmno, lcdbdn)
and SB.LCDBDN not like ''
) der
set Netw_equip=der.NEID
where AM1.accs_meth_num=der.lcdmno
我必须将 max(load_dt) 分组到 lcdmno 和 lcdbdn。
我收到错误消息,例如 select 子句中的表达式过多。
你能帮我解决这个问题吗?
已检查重复项:
sel NEID, LCDMNO, COUNT(*) from
(
sel distinct TRIM(SB.LCDBDN) NEID, trim( leading '0' from sb.lcdmno) LCDMNO,
AM.Netw_equip
from
DB1.PLTL SB
inner join DB.AM_7541 AM
on trim( leading '0' from sb.lcdmno)=AM.accs_meth_num
where SB.LOAD_DATE in ( sel max(load_date),lcdmno,lcdbdn from DB1.PLTL where lcdmno not like ' ' and lcdmno is not null group by lcdmno, lcdbdn)
and SB.LCDBDN not like '')
group by 1,2
having count(*)>1
--- 0 行
谢谢,
阿米特
该错误不言自明,您 return 子查询中的三列,但仅与一行进行比较。
使用相关子查询或多列子查询重写:
update AM1 from DB.AM_7541 AM1,
( sel distinct TRIM(SB.LCDBDN) NEID,
trim( leading '0' from sb.lcdmno) LCDMNO,
AM.Netw_equip
from DB1.PLTL SB
inner join DB.AM_7541 AM
on trim( leading '0' from sb.lcdmno)=AM.accs_meth_num
where (SB.LOAD_DATE, sb.lcdmno, sb.lcdbdn) in
(
sel max(load_date),lcdmno,lcdbdn from DB1.PLTL
where lcdmno not like ' '
and lcdmno is not null
group by lcdmno, lcdbdn
)
and SB.LCDBDN not like ''
) der
set Netw_equip=der.NEID
where AM1.accs_meth_num=der.lcdmno
顺便说一句,应用一些格式确实可以简化 reading/understanding 查询。
我在更新条款中遇到了一个问题。我正在尝试执行以下操作:
update AM1 from DB.AM_7541 AM1,
(sel distinct TRIM(SB.LCDBDN) NEID, trim( leading '0' from sb.lcdmno) LCDMNO,
AM.Netw_equip
from
DB1.PLTL SB
inner join DB.AM_7541 AM
on trim( leading '0' from sb.lcdmno)=AM.accs_meth_num
where SB.LOAD_DATE in ( sel max(load_date),lcdmno,lcdbdn from DB1.PLTL where lcdmno not like ' ' and lcdmno is not null group by lcdmno, lcdbdn)
and SB.LCDBDN not like ''
) der
set Netw_equip=der.NEID
where AM1.accs_meth_num=der.lcdmno
我必须将 max(load_dt) 分组到 lcdmno 和 lcdbdn。 我收到错误消息,例如 select 子句中的表达式过多。
你能帮我解决这个问题吗?
已检查重复项:
sel NEID, LCDMNO, COUNT(*) from
(
sel distinct TRIM(SB.LCDBDN) NEID, trim( leading '0' from sb.lcdmno) LCDMNO,
AM.Netw_equip
from
DB1.PLTL SB
inner join DB.AM_7541 AM
on trim( leading '0' from sb.lcdmno)=AM.accs_meth_num
where SB.LOAD_DATE in ( sel max(load_date),lcdmno,lcdbdn from DB1.PLTL where lcdmno not like ' ' and lcdmno is not null group by lcdmno, lcdbdn)
and SB.LCDBDN not like '')
group by 1,2
having count(*)>1
--- 0 行 谢谢, 阿米特
该错误不言自明,您 return 子查询中的三列,但仅与一行进行比较。
使用相关子查询或多列子查询重写:
update AM1 from DB.AM_7541 AM1,
( sel distinct TRIM(SB.LCDBDN) NEID,
trim( leading '0' from sb.lcdmno) LCDMNO,
AM.Netw_equip
from DB1.PLTL SB
inner join DB.AM_7541 AM
on trim( leading '0' from sb.lcdmno)=AM.accs_meth_num
where (SB.LOAD_DATE, sb.lcdmno, sb.lcdbdn) in
(
sel max(load_date),lcdmno,lcdbdn from DB1.PLTL
where lcdmno not like ' '
and lcdmno is not null
group by lcdmno, lcdbdn
)
and SB.LCDBDN not like ''
) der
set Netw_equip=der.NEID
where AM1.accs_meth_num=der.lcdmno
顺便说一句,应用一些格式确实可以简化 reading/understanding 查询。