当我尝试执行此操作时:
update YUmowa_Kontrahent set YUK_Typ_Umowy= 'WS'
where YUK_IdObiekt in (select YO_Id,
sum(isnull(YROB_WZ_Woda,0))as woda,
sum(isnull(YROB_WZ_Scieki,0))as scieki ,
case
when sum(isnull(YROB_WZ_Woda,0))> 0 and sum(isnull(YROB_WZ_Scieki,0))>0 Then 'WS'
end WS
from YObiekt
join YRozliczenie_Obiekt on YO_Id=YROB_IdObiekt
group by YO_Id)
我接受了:
Msg 116,Level 16,State 1,Line 45只有一个表达式 在未引入子查询时在选择列表中指定 存在。
我需要更新TYP UMOWY ='WS'EN DBO.YUMOWA_KONTRAHENT,其中包括'WODA'和&的总和记录。 'SCIEKI'> 0 我在子查询中指定了唯一ID'S so ???
答案 0 :(得分:0)
UPDATE YUmowa_Kontrahent
SET YUK_Typ_Umowy = 'WS'
WHERE YUK_IdObiekt IN (
SELECT YO_Id
FROM YObiekt
JOIN YRozliczenie_Obiekt ON YO_Id = YROB_IdObiekt
GROUP BY YO_Id
HAVING sum(isnull(YROB_WZ_Woda,0)) > 0 AND sum(isnull(YROB_WZ_Scieki,0)) > 0
)
查询中的子查询错误:
如果您使用除EXISTS
之外的某些声明,则必须仅指定
选择列表中的一个表达式(正如您可以在错误中读到的那样)
消息)。
您的子查询返回所有YO_Id
而不是仅返回该符号
条件sum(isnull(YROB_WZ_Woda,0)) > 0 AND sum(isnull(YROB_WZ_Scieki,0)) > 0
YROB_WZ_Scieki
和YROB_WZ_Woda
来获取ID。答案 1 :(得分:0)
您的select
错误,因为您无法在左侧1参数和右侧3参数上使用in
:
select *
from table
where a in (select a, b, c from table2)
相反,您应该使用:where a in (select a from table2)