sql-server – 如何在SQL Server查询中使用group by?

前端之家收集整理的这篇文章主要介绍了sql-server – 如何在SQL Server查询中使用group by?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在sql Server中遇到组问题

我有这个简单的sql语句:

  1. select *
  2. from Factors
  3. group by moshtari_ID

我收到此错误

Msg 8120,Level 16,State 1,Line 1
Column ‘Factors.ID’ is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

这是我没有分组的结果:

这是group by命令的错误

我的问题在哪里?

解决方法

通常,一旦开始GROUPing,SELECT中列出的每个列都必须是GROUP中的列或其某些聚合.假设您有一个这样的表格:
  1. | ID | Name | City |
  2. | 1 | Foo bar | San Jose |
  3. | 2 | Bar foo | San Jose |
  4. | 3 | Baz Foo | Santa Clara |

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

  1. SELECT * FROM table GROUP BY City

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

  1. SELECT City,count(City) as Cnt FROM table GROUP BY City

……那会得到你:

  1. | City | Cnt |
  2. | San Jose | 2 |
  3. | Santa Clara | 1 |

…但不会得到你的身份证或姓名.你可以做更复杂的事情,例如subselects或self-joins,但基本上你正在尝试做的事情是不可能的.进一步细分你的问题(你希望数据看起来像什么?),然后从那里开始.

祝你好运!

猜你在找的MsSQL相关文章