【问题标题】:How Do I retrieve most Recent record in different years With Date date in different table如何使用不同表中的日期日期检索不同年份的最新记录
【发布时间】:2021-11-13 02:06:13
【问题描述】:

我正在使用一个结构不太好的数据库,需要检索特定年份中使用的最近一个月的行。存储的主要数据存储在会员表中,每个会员月列出一行。成员月份的日期没有专门存储在这里,而是通过外部 Date_Key 连接并链接到日期表。这是可以根据每个表中指定的 Date_Key 派生年份和月份列的地方。 Date 表中的每一行代表一年中的一个新月份,并且每一行都有一个唯一的顺序 date_key。

我使用 Microsoft SQL Server Studio 作为环境

成员表

MemberKey Membe_ID Date_Key
100 1234 89
101 1234 96
102 1234 97
103 1236 96
104 1236 97

日期表

Date_Key Year Month
89 2020 10
90 2020 11
91 2020 12
92 2021 1
93 2021 2
94 2021 3
95 2021 4
96 2021 5
97 2021 6

寻找以下结果

Member_ID Year Month
1234 2020 10
1234 2021 6
1236 2021 6

【问题讨论】:

    标签: sql sql-server subquery max


    【解决方案1】:

    2020/11 不是日期。这是一对年/月。但这似乎是一个简单的聚合 - 按年选择年,最大(月)组。您加入并包含成员 ID,因此您将该列包含在 GROUP BY 子句中,以使每个成员每年获得一行。

    select mbr.Member_ID, dts.Year, max(dts.Month) as Month 
      from dbo.Members as mbr 
     inner join dbo.Dates as dts on mbr.Date_Key = dts.Date_Key
    group by mbr.Member_ID, dts.Year
    order by mbr.Member_ID, dts.Year
    ;
    

    【讨论】:

    • 谢谢。我已经尝试过类似的方法和这种方法,但是,我也被要求在成员组字段中引入第四个字段,所以当 1 年内有 2 个组时,他们希望看到最新的组一年中的一个月。
    猜你喜欢
    • 1970-01-01
    • 2022-01-12
    • 2020-04-04
    • 2021-05-23
    • 1970-01-01
    • 1970-01-01
    • 2020-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多