Microsoft Access 掲示板

キーブレイク処理 / 4

6 コメント
views
4 フォロー
4

( SQL ビュー)

SELECT [Q1].[autoNo_Min] AS [autoNo],
       [所属歴テーブル].[人],
       [所属歴テーブル].[役職],
       [所属歴テーブル].[部門],
       Min([所属歴テーブル].[在籍開始日]) AS [在籍開始日],
       Max([所属歴テーブル].[在籍終了日]) AS [在籍終了日]
FROM [所属歴テーブル],
     (SELECT [所属歴テーブル].[autoNo] AS [autoNo_Min],
             Nz((SELECT Min(tmp2.[autoNo]) - 1
                 FROM [所属歴テーブル] tmp2
                 WHERE tmp2.[autoNo] > [所属歴テーブル].[autoNo]
                   AND (   tmp2.[人] <> [所属歴テーブル].[人]
                        OR tmp2.[役職] <> [所属歴テーブル].[役職]
                        OR tmp2.[部門] <> [所属歴テーブル].[部門])),
                [所属歴テーブル].[autoNo]) AS [autoNo_Max]
      FROM [所属歴テーブル]
      WHERE NOT EXISTS (SELECT tmp.[autoNo]
                        FROM [所属歴テーブル] tmp
                        WHERE tmp.[autoNo] = [所属歴テーブル].[autoNo] - 1
                          AND tmp.[人] = [所属歴テーブル].[人]
                          AND tmp.[役職] = [所属歴テーブル].[役職]
                          AND tmp.[部門] = [所属歴テーブル].[部門])) [Q1]
WHERE [所属歴テーブル].[autoNo] Between [Q1].[autoNo_Min] And [Q1].[autoNo_Max]
GROUP BY [Q1].[autoNo_Min],
         [所属歴テーブル].[人],
         [所属歴テーブル].[役職],
         [所属歴テーブル].[部門]

ORDER BY [Q1].[autoNo_Min];

以上のクエリのような結果を得たい、ということでしょうか。

通報 ...