【问题标题】:SQL tables joined with max与 max 连接的 SQL 表
【发布时间】:2018-05-04 11:53:16
【问题描述】:

我正在处理两张桌子。我在表 A 中有一个完整的组列表,在表 B 中有一个已审查的每个组成员的列表。所以表 B 是每个组的这些成员的所有审查记录的日志。

select a.Group_Name, Max(b.Request_Review_Date)
From GroupTable a
Left Outer Join GroupReviews b ON a.Group_Name = b.Group_Name
Group By a.Group_Name

我要返回的是表 A 中组的完整列表,并从表 B 中找到每个组的最新审核日期。

我已经研究并尝试了所有或大部分内部和外部连接,应用方法....但它只是没有给我结果。谁能指出我正确的方向?还是我必须带回两个结果集并在我的 ASP 代码隐藏中进行比较?

【问题讨论】:

  • 您能提供一些示例数据并期待结果吗?
  • 用您正在使用的数据库标记您的问题。
  • 您的查询看起来正确。结果有什么问题?
  • 我正在获取完整的组列表,但是,我不会返回每个组的最新审核日期。该列为 NULL
  • 您确定要加入正确的列吗?您能否通过运行不带GROUP BY 子句的查询、使用SELECT * 来确认它,并确认您从两个表中都获得了适当的记录?

标签: sql asp.net join max


【解决方案1】:

尝试 CTE,然后重新加入

   WITH Recent AS
  (

  select group_name, max(Request_Review_Date) AS 'MaxReviewDate'
  from GroupReviews
  group by  group_name


  )
    select a.group_name, MaxReviewDate
    from GroupTable a left join Recent 
    on group_name = a.group_name

【讨论】:

  • 这行得通,但它只返回了有审查日期的组。我仍然需要完整的组列表,因为我们还需要确定需要审查的组。感谢您的帮助
  • 然后改成左连接,我根据你的需要编辑了答案
【解决方案2】:

如果您需要所有 a.group 名称行的最大值,则 ypu 应加入最大日期的子查询

select a.Group_Name, t.max_date 
left join (

select b.Group_Name, Max(b.Request_Review_Date) max_date
from GroupReviews b 
Group By b.Group_Name
) t  on t.Group_Name = a.Group_Name

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-24
    • 2015-01-23
    • 2015-05-24
    • 2014-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-19
    相关资源
    最近更新 更多