Select dbo.CUSTINVOICETRANS .SALESID,
dbo.CUSTINVOICETRANS .DATAAREAID,
(SELECT dbo.SALESTABLE.CUSTACCOUNT
FROM dbo.SALESTABLE
WHERE dbo.SALESTABLE.SALESID =(dbo.CUSTINVOICETRANS.SALESID)) AS 客户账户
FROM dbo.CUSTINVOICETRANS
提示:
消息 512,级别 16,状态 1,第 1 行
子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。 把 “=” 改为 “ IN ”,还是提示这个错误!语法也没写错!怎是回事?
请大家帮忙看看哪里错了,帮忙给改一下,只能用子查询实现
dbo.CUSTINVOICETRANS .DATAAREAID,
(SELECT dbo.SALESTABLE.CUSTACCOUNT
FROM dbo.SALESTABLE
WHERE dbo.SALESTABLE.SALESID =(dbo.CUSTINVOICETRANS.SALESID)) AS 客户账户
FROM dbo.CUSTINVOICETRANS
提示:
消息 512,级别 16,状态 1,第 1 行
子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。 把 “=” 改为 “ IN ”,还是提示这个错误!语法也没写错!怎是回事?
请大家帮忙看看哪里错了,帮忙给改一下,只能用子查询实现
dbo.CUSTINVOICETRANS .DATAAREAID,
(SELECT top 1 dbo.SALESTABLE.CUSTACCOUNT
FROM dbo.SALESTABLE
WHERE dbo.SALESTABLE.SALESID =(dbo.CUSTINVOICETRANS.SALESID) order by dbo.SALESTABLE.CUSTACCOUNT) AS 客户账户
FROM dbo.CUSTINVOICETRANS
dbo.CUSTINVOICETRANS .DATAAREAID,
dbo.SALESTABLE.CUSTACCOUNT AS 客户账户v
from dbo.CUSTINVOICETRANS ,dbo.SALESTABLE
where dbo.SALESTABLE.SALESID = dbo.CUSTINVOICETRANS.SALESID
dbo.CUSTINVOICETRANS .DATAAREAID,
(SELECT MAX(dbo.SALESTABLE.CUSTACCOUNT)
FROM dbo.SALESTABLE
WHERE dbo.SALESTABLE.SALESID =(dbo.CUSTINVOICETRANS.SALESID)) AS 客户账户
FROM dbo.CUSTINVOICETRANS 原因是子查询中的select出来的不止一条 你必须用聚合函数将返回出一条记录
SELECT dbo.CUSTINVOICETRANS .SALESID,
dbo.CUSTINVOICETRANS .DATAAREAID,
dbo.SALESTABLE.CUSTACCOUNT AS 客户账户
FROM dbo.CUSTINVOICETRANS ,dbo.CUSTINVOICETRANS
WHERE dbo.SALESTABLE.SALESID = dbo.CUSTINVOICETRANS.SALESID
dbo.CUSTINVOICETRANS .DATAAREAID,
dbo.SALESTABLE.CUSTACCOUNT AS 客户账户
FROM dbo.CUSTINVOICETRANS inner join dbo.SALESTABLE
on dbo.SALESTABLE.SALESID =(dbo.CUSTINVOICETRANS.SALESID) --或者left join