SQL中的减法 - 无法对包含聚合或子查询的表达式执行聚合函数

时间:2017-09-14 09:01:46

标签: sql sql-server database

我试图找到我数据库中当前艺术家的数量。

我认为一个很好的方法就是找到艺术家的数量,找到结束日期的艺术家数量,然后从总数中减去非当前艺术家。

代码:

SELECT COUNT(Name) AS NumberOfArtists,
COUNT(YearEnded) AS NumberEnded,
COUNT(COUNT(Name) - COUNT(YearEnded)) AS NumberOfCurrentArtists
FROM Artists;

我收到错误:

  

无法对包含聚合或子查询的表达式执行聚合函数。

我已经查看了有关堆栈溢出的许多其他问题并出现了相同的错误,但这似乎是一个非常广泛的错误,我无法找到我做错的事情。

1 个答案:

答案 0 :(得分:3)

SELECT  COUNT(Name) AS NumberOfArtists
      , COUNT(YearEnded) AS NumberEnded
      , COUNT(Name) - COUNT(YearEnded) AS NumberOfCurrentArtists
FROM    Artists;

你不需要计算差异,这没有任何意义。