我想显示该列B
在我的下面的 SQL 中,但是当我将其添加到查询中时,它给出了以下错误:
T2.B'栏
在选择列表中无效,因为它不包含在
聚合函数或 GROUP BY 子句。
My code:
SELECT A, COUNT(B) as T1, B
FROM T2
WHERE ID=1
GROUP BY A
换句话说,这个错误告诉你 SQL Server 不知道which B
从组中选择。
您想要选择一个特定值(例如MIN
, SUM
, or AVG
)在这种情况下,您将使用适当的聚合函数,或者您希望选择每个值作为新行(即包括B
in the GROUP BY
字段列表)。
考虑以下数据:
ID A B
1 1 13
1 1 79
1 2 13
1 2 13
1 2 42
查询
SELECT A, COUNT(B) AS T1
FROM T2
GROUP BY A
会返回:
A T1
1 2
2 3
这一切都很好。
但是,请考虑以下(非法)查询,这将产生此错误:
SELECT A, COUNT(B) AS T1, B
FROM T2
GROUP BY A
其返回的数据集说明了问题:
A T1 B
1 2 13? 79? Both 13 and 79 as separate rows? (13+79=92)? ...?
2 3 13? 42? ...?
但是,以下两个查询清楚了这一点,并且不会导致错误:
-
使用聚合
SELECT A, COUNT(B) AS T1, SUM(B) AS B
FROM T2
GROUP BY A
会返回:
A T1 B
1 2 92
2 3 68
-
将列添加到GROUP BY
list
SELECT A, COUNT(B) AS T1, B
FROM T2
GROUP BY A, B
会返回:
A T1 B
1 1 13
1 1 79
2 2 13
2 1 42
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)