Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 聚合子查询中缺少group by语句_Sql_Sql Server - Fatal编程技术网

Sql 聚合子查询中缺少group by语句

Sql 聚合子查询中缺少group by语句,sql,sql-server,Sql,Sql Server,我有一个查询,一段时间内同一客户有多个销售人员,因此我只想显示该客户的最新销售人员 我编写了以下查询以显示最新日期的客户和销售人员,但得到的错误是“聚合可能不会出现在WHERE子句中,除非它位于HAVING子句或select列表中包含的子查询中,并且正在聚合的列是外部引用。” 我不确定GROUPBY语句会在这里出现在哪里,假设这就是原因,希望有人能帮助我们使用正确的语法 select CUST_NAME, SALESMAN_NAME, year(invoice_Date) from ns.SA

我有一个查询,一段时间内同一客户有多个销售人员,因此我只想显示该客户的最新销售人员

我编写了以下查询以显示最新日期的客户和销售人员,但得到的错误是“聚合可能不会出现在WHERE子句中,除非它位于HAVING子句或select列表中包含的子查询中,并且正在聚合的列是外部引用。”

我不确定GROUPBY语句会在这里出现在哪里,假设这就是原因,希望有人能帮助我们使用正确的语法

select CUST_NAME, SALESMAN_NAME, year(invoice_Date) 
from ns.SAR_COMBINED sc
where sc.invoice_date  >= (select max(sc.invoice_date) from 
ns.SAR_COMBINED)
谢谢

您想要相关子查询:

select CUST_NAME, SALESMAN_NAME, year(invoice_Date) 
from ns.SAR_COMBINED sc
where sc.invoice_date >= (select max(sc2.invoice_date)
                          from ns.SAR_COMBINED sc2
                          where sc2.cust_name = sc.cust_name
                         );

correlation子句是子查询中的
where
子句。它将
sc2
中的客户与外部查询中的客户进行匹配。

您也可以使用
行号()


非常感谢。使用您的查询,我得到了相同的错误-即“聚合可能不会出现在WHERE子句中,除非它位于HAVING子句或select列表中包含的子查询中,并且被聚合的列是外部引用。”@Danimov82。打字错误
max()
需要在内部查询别名上,而不是在外部查询上。@Danimov82。是的。
   select * from ( 
    select CUST_NAME, SALESMAN_NAME,
     year(invoice_Date) ,
    row_number() over(partition by cust_name order by invoice_date desc ) rn
    from ns.SAR_COMBINED sc) t where t.rn=1