【问题标题】:Microsoft Sql Server Management Studio invalid in the select listMicrosoft Sql Server Management Studio 在选择列表中无效
【发布时间】:2017-04-21 18:54:05
【问题描述】:

我试图从我的表中搜索并使用 group by,但在执行查询时收到错误消息。以下是我的查询和我得到的错误:

select * from loans where ac_no='100001' group by ac_no, branch

和错误:

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

拜托,我做错了什么

【问题讨论】:

  • 你首先想做什么?
  • 在使用 GROUP BY 时不能使用 SELECT *。您必须指定未在 GROUP BY 子句中列出的任何列会发生什么(即 MIN()、MAX() 或其他一些聚合,因为 GROUP BY 输出的一行会有许多可能的值)

标签: sql-server sql-server-2008 tsql sqlsrv


【解决方案1】:

如果你想聚合一些东西......

select ac_no, branch, count(*)
from loans
where ac_no = '100001'
group by 
   ac_no
 , branch

如果你只是想选择行,你不需要group by

select *
from loans
where ac_no = '100001'

如果您尝试选择不同的行...

select distinct *
from loans
where ac_no = '100001'

【讨论】:

  • 我正在尝试返回从数据库返回的最小值,以防用户出现多次。
  • @fagbemiayodele 例如,您可能想要基于某些date 列而不是min() 值的第一条记录还是最后一条记录?在这种情况下,我会推荐select top 1 * from ... where ... order by createddate desc。
猜你喜欢
  • 2021-06-05
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多