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  ”,还是提示这个错误!语法也没写错!怎是回事?
     请大家帮忙看看哪里错了,帮忙给改一下,只能用子查询实现

解决方案 »

  1.   

    你对应的内容存在多个,在子查询中是不允许的。可以改为如下:Select dbo.CUSTINVOICETRANS .SALESID,
    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  
      

  2.   

    Select dbo.CUSTINVOICETRANS .SALESID,
    dbo.CUSTINVOICETRANS .DATAAREAID,
    dbo.SALESTABLE.CUSTACCOUNT  AS 客户账户v
    from dbo.CUSTINVOICETRANS ,dbo.SALESTABLE
    where   dbo.SALESTABLE.SALESID = dbo.CUSTINVOICETRANS.SALESID 
     
      

  3.   

    Select 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出来的不止一条 你必须用聚合函数将返回出一条记录
      

  4.   


    SELECT dbo.CUSTINVOICETRANS .SALESID,
    dbo.CUSTINVOICETRANS .DATAAREAID,
    dbo.SALESTABLE.CUSTACCOUNT AS 客户账户
    FROM dbo.CUSTINVOICETRANS ,dbo.CUSTINVOICETRANS
    WHERE dbo.SALESTABLE.SALESID =  dbo.CUSTINVOICETRANS.SALESID
      

  5.   

    Select 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