首页 > 解决方案 > 使用 Group By 和 3 列查看

问题描述

我正在尝试创建一个按列 INCM 分组的视图,该列仅返回 OLDEST 日期和带有详细信息的相应第三列。

这仅适用于以下 2 列:

SELECT [INCM],min(Submit_Date) as Datsubmite From [OP].[TABLEXAMPLE]

WHERE
Work_Info_Notes Like '%test%' 
  and Work_Info_Notes Like '%raised%' 
  and Work_Info_Notes Like '%with%'
  and Work_Info_Notes Like'%test2%'

Group By INCM

我只是不知道如何包含第 3 列,因为我不知道如何指定要为第 3 列选择哪一行。我希望第三列返回显示的 min(Submit_Date) 的相应注释,但不知道如何处理:

SELECT [INCM],min(Submit_Date) as Datsubmite, Work_Info_Notes
From [OP].[TABLEXAMPLE]

WHERE
Work_Info_Notes Like '%test%' 
  and Work_Info_Notes Like '%raised%' 
  and Work_Info_Notes Like '%with%'
  and Work_Info_Notes Like'%test2%'

Group By INCM

我得到这个错误:

消息 8120,级别 16,状态 1,第 3 行列“OP.TABLEXAMPLE.Work_Info_Notes”在选择列表中无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中。

标签: sqlsql-servergroup-by

解决方案


我不知道您使用的是哪个 SQL-Server,但在 Oracle 中您会使用:

FIRST_VALUE(Work_Info_Notes)
  OVER (PARTITION BY INCM ORDER BY Submit_Date) AS lowest_sal

如果这是 MS-SQL,请查看:https ://docs.microsoft.com/en-us/sql/t-sql/functions/first-value-transact-sql?view=sql-server-ver15 。


推荐阅读