次の 2 つの select ステートメントがあり、一致する必要がある Date 列に基づいて、テーブル内でエントリ時刻と終了時刻が隣り合っている状態でマージしたいと考えています。
SELECT NAME, SURNAME,IDENTIFIER, CONVERT(VARCHAR,(MIN(TRANSIT_DATE)),114) AS [ENTRY],'' AS [EXIT], CONVERT(VARCHAR(10),TRANSIT_DATE,103)AS [DATE]
FROM [10.230.0.15].[SCAT].[dbo].[HA_TRANSIT] a
WHERE STR_DIRECTION = 'Entry'
and a.IDENTIFIER = '20045619'
AND STR_TRANSIT_STATUS = 'Granted'
AND TRANSIT_DATE BETWEEN @CompleteSDate AND @CompleteEDate
GROUP BY NAME, SURNAME,IDENTIFIER,CONVERT(VARCHAR(10),TRANSIT_DATE,103)
SELECT NAME, SURNAME,IDENTIFIER, '' AS [ENTRY],CONVERT(VARCHAR,(MAX(TRANSIT_DATE)),114) AS [EXIT], CONVERT(VARCHAR(10),TRANSIT_DATE,103)AS [DATE]
FROM [10.230.0.15].[SCAT].[dbo].[HA_TRANSIT] a
WHERE STR_DIRECTION = 'Exit'
and a.IDENTIFIER = '20045619'
AND STR_TRANSIT_STATUS = 'Granted'
AND TRANSIT_DATE BETWEEN @CompleteSDate AND @CompleteEDate
GROUP BY NAME, SURNAME,IDENTIFIER,CONVERT(VARCHAR(10),TRANSIT_DATE,103)
クエリ 1 の結果 名前 姓 識別子 エントリ 終了日 アントネット コールマン 20045619 07:11:01:000 10/09/2013 アントネット コールマン 20045619 06:58:58:000 11/09/2013 アントネット コールマン 20045619 0:70:0 12/09/2013 アントネット コールマン 20045619 07:02:48:000 13/09/2013 アントネット コールマン 20045619 07:17:43:000 16/09/2013 アントネット コールマン 20045619 06:54:35:000 2013/17アントネット・コールマン 20045619 07:00:36:000 18/09/2013 アントネット・コールマン 20045619 06:57:33:000 19/09/2013
クエリ 2 の結果 名前 姓 識別子
エントリ 終了日 アントネット コールマン 20045619 16:09:39:000 10/09/2013 12/09/2013 アントネット コールマン 20045619 16:04:28:000 13/09/2013 アントネット コールマン 20045619 16:06:04:000 16/09/2013 アントネット コールマン 20045619 16:05:30:000 2013/17アントネット・コールマン 20045619 16:02:00:000 18/09/2013