1

私はこれに長い間苦労してきました... と呼ばれるサービステーブルから最新および 2 番目に最近のサービス日付を引き出​​すために、Access で SQL ステートメントを作成しようとしていますCleaning

サンプル生データ:

Premises_No Date_Cleaned
1           12-Jun
1           15-Jul
1           14-Aug
2           15-Jan
2           18-Feb
2           17-Apr
2           14-May
2           06-Jun
2           11-Jul
2           16-Aug
6           10-Dec
6           12-Jan
6           20-Feb
6           13-Mar
6           15-Apr
6           15-May
6           11-Jun
6           13-Jul
6           10-Aug

したがって、実行された SQL は次のようになります。

Premises_No MostRecent  2ndMostRecent
1           14-Aug          15-Jun
2           16-Aug          11-Jul
6           10-Aug          13-Jul
4

2 に答える 2

0
SELECT last.Premises_No, last.LastCleaned, secondlast.SecondLastCleaned
FROM
(
SELECT c1.Premises_No as Premises_No, Max(c1.Date_Cleaned) AS LastCleaned
FROM Cleaning c1 group by c1.Premises_No
)
as last
LEFT JOIN
(
SELECT c2.Premises_No as Premises_No, Max(c2.Date_Cleaned) AS SecondLastCleaned
FROM Cleaning c2 where c2.Date_Cleaned < (Select Max(c3.Date_Cleaned) FROM Cleaning c3 WHERE c3.Premises_No= c2.Premises_No)
GROUP BY c2.Premises_No
)
as
secondlast
ON last.Premises_No=secondlast.Premises_No
于 2012-08-27T20:38:12.690 に答える
0
SELECT 前提 ID、SUM(s.[1st]) AS [1st]、SUM(s.[2nd]) AS [2nd]
から (
    SELECT premise_id, MAX(date_cleaned) AS [1st], NULL AS [2nd]
    フロムクリーニング
    GROUP BY 施設 ID
    連合
    SELECT premise_id, NULL AS [1st], MAX(date_cleaned) AS [2nd]
    フロムクリーニング
    左結合
    (
        SELECT premise_id, MAX(date_cleaned) AS [1st], NULL AS [2nd]
        フロムクリーニング
        GROUP BY 施設 ID
    ) AS t ON クリーニング.前提_id = t.前提_idおよびクリーニング.日付_クリーニング済み t.日付_クリーニング済み
    GROUP BY 施設 ID
) 秒

于 2012-08-27T20:20:20.310 に答える