更新条款的问题

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 查询。