按供应商分组的三个表的最新记录

时间:2017-12-01 12:53:47

标签: sql-server access-vba

我需要从数据库(SQLServer)创建一个包含三个表(表1/2/3)中的记录的列表。 目标是,每个供应商的最新交付日期在ACCESS中列出。 e.g。

  • 供应商1 |日期1
  • 供应商1 |日期2
  • 供应商1 |日期3
  • 供应商2 |日期1
  • 供应商2 |日期2

将成为

  • 供应商1 |日期3
  • 供应商2 |日期2

我能够创建完整的列表,但无法找到过滤掉最新的交付日期。到目前为止,这是我的代码:

Age

论坛中有一些提示,但我无法运行。 你有什么建议吗?非常感谢你提前。 - 埃里克

2 个答案:

答案 0 :(得分:0)

您可以在SQL Server中实现此功能

SELECT
        Supplier,Date
    (
        SELECT  Supplier,Date,
            ROW_NUMBER() OVER (PARTITION BY Supplier ORDER BY Date DESC) rn
        FROM Table1 
    ) t
    WHERE t.rn = 1;

答案 1 :(得分:0)

在Access中,您可以使用:

stmt_frei_list = "SELECT MBS.Supplier, Max(V.Date) As NewestDate " & _
                 "FROM Table1 as MBS INNER JOIN Table2 as V ON MBS.PartID = V.PartID " & _
                 "INNER JOIN Table3 AS SZ ON SZ.Supplier = MBS.Supplier AND V.SupplierID = SZ.SupplierID " & _
                 "WHERE MBS.PartID = " & id & " " & _
                 "GROUP BY MBS.Supplier"

如果日期的 Null 值存在:

stmt_frei_list = "SELECT MBS.Supplier, Max(Nz(V.Date, Date())) As NewestDate " & _

没有 Nz

stmt_frei_list = "SELECT MBS.Supplier, Max(IIf(V.Date Is Null, Date(), V.Date)) As NewestDate " & _