如何在SQL Server查询中使用group by?

sam*_*man 6 sql-server

我在SQL Server中遇到组问题

我有这个简单的SQL语句:

select * 
from Factors 
group by moshtari_ID
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

消息8120,级别16,状态1,行1
列'Factors.ID'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中.

这是我没有分组的结果:

在此输入图像描述

这是group by命令的错误:

在此输入图像描述

我的问题在哪里?

BJ *_*ack 15

通常,一旦开始GROUPing,SELECT中列出的每个列都必须是GROUP中的列或其某些聚合.假设你有一个这样的表:

| ID | Name        | City        |
|  1 | Foo bar     | San Jose    |
|  2 | Bar foo     | San Jose    |
|  3 | Baz Foo     | Santa Clara |
Run Code Online (Sandbox Code Playgroud)

如果您想获得数据库中所有城市的列表,并尝试:

SELECT * FROM table GROUP BY City
Run Code Online (Sandbox Code Playgroud)

...那会失败,因为你要求不在GROUP BY子句中的列(ID和Name).你可以改为:

SELECT City, count(City) as Cnt FROM table GROUP BY City
Run Code Online (Sandbox Code Playgroud)

......那会得到你:

| City        | Cnt |
| San Jose    |  2  |
| Santa Clara |  1  |
Run Code Online (Sandbox Code Playgroud)

...但不会得到你的身份证或姓名.您可以使用例如子选择或自连接来执行更复杂的操作,但基本上您正在尝试执行的操作是不可能的.进一步细分你的问题(你希望数据看起来像什么?),然后从那里开始.

祝好运!