次の表があります。
ID SampleID SampleState Date
1 A1 First 1/10/2013
2 A1 Second 1/11/2013
3 A1 Last 1/12/2013
4 A2 First 1/10/2013
5 A2 Closed 1/11/2013
6 A3 First 1/10/2012
7 A3 Second 1/10/2012
次のルールを使用して行を引き出す必要があります。
a.) Display the lowest date of each SampleID provided the date is more than 10 days from current day
b.) Display the latest state of each SampleID.
c.) Do not display the SampleID if any of the state of the SampleID is Closed
たとえば、このテーブルの場合、出力は次のようになります。
SampleID SampleState Date
A1 Last 1/10/2013
A3 Second 1/10/2012
クエリにすべての結果が表示されません。
SELECT a.SampleID,a.SampleState,b.date
FROM ListOfStates
INNER JOIN
(
SELECT ID,SampleID, Max(ID) Max_ID, SampleState
FROM ListOfStates
GROUP BY SampleID
) a
on a.Max_ID = ListOfStates.ID
INNER JOIN
(
SELECT ID,SampleID, Min(ID) min_ID, date
FROM ListOfStates
GROUP BY SampleID
) b
on b.min_ID = ListOfStates.ID
where
b.Date < DATE_SUB(CURDATE(), INTERVAL 10 DAY)
and a.SampleState !='Closed'