SQL 无法绑定由多个部分组成的标识符

SQL 语句如下:
update self2
set yshkze=s.yskze --self2表的应收款总额=临时表S的应收款总额
from self2 receivablesbill,
(
select distinct(skxm),
sum(CASE WHEN receivablesbill.jhysrq IS NOT NULL THEN receivablesbill.yfkje ELSE 0 END) yskze --当应收款日期非空的时候,求应收款金额合计,否则为零
from receivablesbill
group by skxm
) s
where self2.xmmc=s.skxm
------------------------------------------------------------------------------------------------------

错误结果如下:
消息 4104,级别 16,状态 1,第 1 行
无法绑定由多个部分组成的标识符 "self2.xmmc"。

请SQL专家指教
首先谢谢叶子的小情意,给予第一时间的解惑。
最终自己发现了问题,已经修正解决,结果如下:

update self2
set yshkze=s.yskze --self2表的应收款总额=临时表S的应收款总额
from self2, receivablesbill, --self2 后面增加个逗号,否则认为receivablesbill为self2的别名,问题就出现在这里。
(
select distinct(skxm),
sum(CASE WHEN receivablesbill.jhysrq IS NOT NULL THEN receivablesbill.yfkje ELSE 0 END) yskze --当应收款日期非空的时候,求应收款金额合计,否则为零
from receivablesbill
group by skxm
) s
where self2.xmmc=s.skxm

出现这种错误 ,主要问题是因给未给列明确指定所属的表。如二个表同时有相同的列,就需要显示指定是哪个表。
示例如下,下面列中ID需要明确为a.ID 或b.ID
select ID,b.other from table a left ouer join table b on a.id=b.id -- 出错,明确为A.ID即可。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-01-21
出现这个错误,绝大部分是因为多个表存在同名字段,建议给表取个别名

update self2 sf2 --取别名
set sf2.yshkze=s.yskze --self2表的应收款总额=临时表S的应收款总额
from self2 receivablesbill,
(
select distinct(skxm),
sum(CASE WHEN receivablesbill.jhysrq IS NOT NULL THEN receivablesbill.yfkje ELSE 0 END) yskze --当应收款日期非空的时候,求应收款金额合计,否则为零
from receivablesbill
group by skxm
) s
where sf2.xmmc=s.skxm--使用别名.字段名去链接

试下这个本回答被网友采纳
相似回答