MS Access最近的约会

时间:2018-04-18 16:47:34

标签: sql ms-access

我对查询很陌生,所以请耐心等待。我查看了一个已发布的主题,它几乎适用于我。我只需要再拉一个字段。

这是我的数据:

my data

以下是我要对数据进行的操作。我想要每个项目和XorZ的最新数据。每个项目将有2行,一个用X,一个用Z.它们将显示最大日期,并返回该日期的值。

示例:

enter image description here

我尝试使用它有效。

SELECT Item, MAX(Date), XorZ
FROM MyTable
GROUP BY Item, XorZ
ORDER BY ITEM

尝试将“值”添加到“选择”后,它无法正常工作。我得到"您的查询不包含指定的表达式'值'作为聚合函数的一部分。然后,当我将Value添加到" Group By"时,数据输出不会带回每个Item和XorZ的最新日期。

2 个答案:

答案 0 :(得分:2)

如果您需要与item,XorZ和max_date相关的值 你应该使用max_date

的子选择加入你的表
   SELECT Item, Date, XorZ, value 
   from MyTable
   INNER JOIN (

       SELECT Item, MAX(Date) max_date, XorZ
      FROM MyTable
      GROUP BY Item, XorZ
       ) t on t.max_date = MyTable.daye 
            and t.Item = MyTable.Item 
             and t.XorZ = MyTable.XorZ

答案 1 :(得分:0)

再选择它......

SELECT xcurr.date
, xcurr.Item
, xcurr.XorZ
, xval.value
FROM MyTable xval INNER JOIN (
SELECT Item, XorZ, MAX(Date) AS [date]
FROM #MyTable 
GROUP BY Item, XorZ, XorZ
) AS xcurr
ON xcurr.Item = xval.Item 
AND xcurr.XorZ = xval.XorZ
AND xcurr.Date = xval.Date
ORDER BY item, XorZ

以下是结果:

enter image description here

尝试向表中添加主键。