我尝试运行如下 sql 查询(mssql 2005):
select top 20 d_date, date1, date2
from reestr_calculated
where reestr_id=2
group by date2
order by date2 desc
我收到以下错误:
列 'reestr_calculated.d_date' 在选择列表中无效,因为它不包含在聚合函数或 GROUP BY 子句中。
有谁知道我该如何处理这个错误?
我尝试运行如下 sql 查询(mssql 2005):
select top 20 d_date, date1, date2
from reestr_calculated
where reestr_id=2
group by date2
order by date2 desc
我收到以下错误:
列 'reestr_calculated.d_date' 在选择列表中无效,因为它不包含在聚合函数或 GROUP BY 子句中。
有谁知道我该如何处理这个错误?
除非您使用聚合函数,否则存在的所有列名都SELECT
必须存在。GROUP BY
因此,在 group by 中也添加 date1。
当您使用 时GROUP BY
,多行会“折叠”成一行。要确定应显示组中的哪些行,您必须使用聚合函数。
喜欢MIN()
或SUM()
或其他。
像这样:
select top 20 MIN(d_date), MAX(date1), date2
from reestr_calculated
where reestr_id=2
group by date2
order by date2 desc
或像这样:
select top 20 d_date, date1, date2
from reestr_calculated
where reestr_id=2
group by d_date, date1, date2
order by date2 desc
您按 分组,这意味着为每个值date2
返回一行。date2
每个date2
值可以有多个d_date
ordate1
值,因此 SQL 不知道要为每个值返回哪些值。
正如错误所说,您需要一个聚合函数(MAX()
,MIN()
等AVG()
)或在 GROUP BY 子句中包含其他列