示例:
PK Date Status Serial
----------------------------
1 11012015 1 8888
2 11032015 8 8888
3 12012015 1 8888
4 11032015 1 9999
5 11152015 1 9999
6 12012015 8 9999
我正在尝试获取serial的所有值,其中每个日期的最后一个状态是1,但如果最后一个状态是8,那么我需要排除这些序列号。
因此,上面的示例将显示8888,因为最后一个状态为1
虽然9999会被过滤,因为它的最后状态是8。
答案 0 :(得分:0)
这是按序列获取最新日期,然后连接回主表(我在此称为YourTable
,因为您没有提供实际名称)以获取其余数据。您的过滤发生在WHERE
子句中。
SELECT
YourTable.PK,
YourTable.[Date],
YourTable.[Status],
YourTable.Serial
FROM
(
SELECT
Serial,
MAX([Date]) AS [MaxDate]
FROM
YourTable
GROUP BY
Serial
) DerivedMaxDateBySerial
LEFT OUTER JOIN YourTable ON DerivedMaxDateBySerial.Serial = YourTable.Serial AND DerivedMaxDateBySerial.[MaxDate] = YourTable.[Date]
WHERE
YourTable.[Status] != 8