Sql server 查询和子查询有问题:SQL子查询返回的值超过1

Sql server 查询和子查询有问题:SQL子查询返回的值超过1,sql-server,Sql Server,下面是我试图运行的内容,但出现了一个错误。有什么想法吗 SELECT Client_Account_Name, ( select Distinct t1.Contact_email as temp3 from Order_Log_SFDC t1 inner join ( select max(Event_Date_Time) Event_Date_Time, Client_Account_Name

下面是我试图运行的内容,但出现了一个错误。有什么想法吗

SELECT 
   Client_Account_Name, 
   (
       select Distinct t1.Contact_email as temp3 
       from Order_Log_SFDC t1
       inner join
       (
          select max(Event_Date_Time) Event_Date_Time, Client_Account_Name
          from Order_Log_SFDC
          group by Client_Account_Name
       )  t2 on t1.Client_Account_Name = t2.Client_Account_Name
              and t1.Event_Date_Time = t2.Event_Date_Time
   ) as Email,

    MIN(Source) as source, 
    SUM(Final_Quote) as Total, 
    MIN(Event_Date_Time) AS min_date, 
    Max(Event_Date_Time) as max_date, 
    count(Distinct Event_Date_Time) as numOrders

FROM Order_Log_SFDC
Group By Client_Account_Name
这就是错误:

SQL错误[512][21000]:子查询返回了多个值。
当子查询在=、!=、=或者当子查询用作表达式时。
SQL错误[512][21000]:子查询返回了多个值。
当子查询在=、!=、=或者当子查询用作表达式时。
SQL错误[512][21000]:子查询返回了多个值。
当子查询在=、!=、=或者当子查询用作表达式时。
SQL错误[512][21000]:子查询返回了多个值。
当子查询后跟=、!=、时,不允许这样做= 或者当子查询用作表达式时。
子查询返回了多个值。当子查询在=、!=、=或者当子查询用作表达式时。
未声明游标

像这样试试

SELECT
    Client_Account_Name,
    Email = CONVERT(VARCHAR(200), SUBSTRING(MAX(CONVERT(BINARY(8), Event_Date_Time) + CONVERT(VARBINARY(200), Contact_email)), 9, 200)),
    source  = MIN(Source),
    Total = SUM(Final_Quote),
    min_date = MIN(Event_Date_Time),
    max_date = MAX(Event_Date_Time),
    numOrders = COUNT(DISTINCT Event_Date_Time)
FROM
    Order_Log_SFDC
GROUP BY
    Client_Account_Name;

大家好,欢迎来到SO。考虑到这些错误消息,我猜您正在使用sql server?在标记为mysql sql server时必须小心。此错误是因为有一个子查询作为列。如果该子查询返回的行数超过1行,则引擎不知道如何处理它。不太清楚为什么这里有三个查询都在同一个表中。这是一个很好的开始。非常感谢。不过我还有一个问题。我试图将两个具有相同列的表合并到一个临时表中,然后从合并后的数据中得到一个结果,但得到一个错误,即“无效的对象名##t”,这意味着您试图引用一个尚未创建或已删除的全局临时表。我只是通过更新我的原始帖子上传了我正在使用的代码,因为它太长,无法作为评论发布。我正在创建临时表,只将其放到最后,但由于某些原因,代码会运行一段时间,然后失败。在得到答案后,请不要更改问题的基本原理。请用你的新问题创建一个新的线程。有意义!非常感谢。
SELECT 
   Client_Account_Name, 
   (
       SELECT TOP 1 Contact_email 
       FROM Order_Log_SFDC t2
       WHERE t2.Client_Account_Name = t1.Client_Account_Name
       ORDER BY Event_Date_Time DESC
   ) As Email,
   MIN(Source) as source, 
   SUM(Final_Quote) as Total, 
   MIN(Event_Date_Time) AS min_date, 
   Max(Event_Date_Time) as max_date, 
   count(Distinct Event_Date_Time) as numOrders

FROM Order_Log_SFDC t1
Group By Client_Account_Name