msv*_*uze 72 sql-server group-by
我想B在我的下面的SQL中显示该列,但是当我将它添加到查询时它会给我以下错误:
列T2.B'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中.
我的代码:
SELECT A, COUNT(B) as T1, B
FROM T2
WHERE ID=1
GROUP BY A
Run Code Online (Sandbox Code Playgroud)
lc.*_*lc. 135
换句话说,此错误告诉您SQL Server不知道从组中选择哪个 B.
要么你想选择一个特定的值(例如MIN,SUM或AVG),在这种情况下,你会使用相应的聚合函数,或者你想选择的每个值作为新行(即包括B在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
Run Code Online (Sandbox Code Playgroud)
会回来:
A T1 1 2 2 3
这一切都很好.
但是请考虑以下(非法)查询,这会产生此错误:
SELECT A, COUNT(B) AS T1, B
FROM T2
GROUP BY A
Run Code Online (Sandbox Code Playgroud)
它返回的数据集说明了问题:
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
Run Code Online (Sandbox Code Playgroud)
会回来:
A T1 B 1 2 92 2 3 68
将列添加到GROUP BY列表中
SELECT A, COUNT(B) AS T1, B
FROM T2
GROUP BY A, B
Run Code Online (Sandbox Code Playgroud)
会回来:
A T1 B 1 1 13 1 1 79 2 2 13 2 1 42
| 归档时间: |
|
| 查看次数: |
267754 次 |
| 最近记录: |