首页 > 解决方案 > 计算结果表中的其他列时如何显示列?

问题描述

我有一个 SQL Server 表,如下所示:

在此处输入图像描述

这是我从 MyTable 获取数据的查询:

SELECT COUNT(distinct Column1) AS CountCol1 
FROM MyTable  
WHERE ((CONVERT(CHAR, Column2, 104) = '27.09.2019') 
       OR (CONVERT(CHAR, Column2, 104) = '28.09.2019'))

在结果表中,我不仅要显示 Column1 的计数,还要显示 Column2 的值。

当我尝试将查询更改为:

SELECT COUNT(DISTINCT Column1) AS CountCol1, Column2 AS Col2  
FROM MyTable  
WHERE ((CONVERT(CHAR, Column2, 104) = '27.09.2019') 
       OR (CONVERT(CHAR, Column2, 104) = '28.09.2019'))

我收到一条错误消息:

列 'MyTable.Column2' 在选择列表中无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中。

请帮助我解决此问题并在我的结果表中显示 Column2。

标签: sqlsql-server

解决方案


如果您的意图是获取 Column2 的每个唯一值的不同 Column1 的计数,则可以这样做:

SELECT Column2, COUNT(distinct Column1) AS CountCol1
FROM MyTable
GROUP BY Column2
HAVING (....)
WHERE (....)

推荐阅读