0

日時カップルを含む「検出されたプレゼンス」テーブルと日時カップルを含む「予想されるプレゼンス」テーブルがあります...プレゼンスをいつ期待したか知りたいのですが、ありませんでした...これは日時との設定の違いだと思います(オペランドを除いてtsqlで)、しかし私はsqlで解決する方法がわかりません。

はっきりしなかった場合の例:

    CREATE TABLE [dbo].[DetectedPresence](
        [entrance] [datetime] NULL,
        [exit] [datetime] NULL
    )

    CREATE TABLE [dbo].[ExpectedPresence](
        [entrance] [datetime] NULL,
        [exit] [datetime] NULL
    )

INSERT INTO ExpectedPresence VALUES ('2012-11-16 08.15','2012-11-16 12.00')
INSERT INTO ExpectedPresence VALUES ('2012-11-16 17.00','2012-11-16 18.00')
INSERT INTO DetectedPresence VALUES ('2012-11-16 08.00','2012-11-16 12.00')
INSERT INTO DetectedPresence VALUES ('2012-11-16 15.00','2012-11-16 18.00')

ExpectedPresence値:

entrance               exit
2012-11-16 08.00       2012-11-16 12.00
2012-11-16 15.00       2012-11-16 18.00

DetectedPresence値:

entrance               exit
2012-11-16 08.15       2012-11-16 12.00
2012-11-16 15.00       2012-11-16 17.00

日時セットの差(ギャップ)が欲しいのですが:

2012-11-16 08.00       2012-11-16 08.15
2012-11-16 17.00       2012-11-16 18.00

手伝って頂けますか?ありがとうございました。

4

1 に答える 1

0

の線に沿った何か

case when detectedStart > expectedStart then 
   expectedStart + '-' + detectedStart 
else null end as startDiff,
case when detectedEnd < expectedEnd then 
   detectedEnd + '-' + expectedEnd 
else null end as endDiff

また

    insert into difference (expectedStart, detectedStart)
    Select
        expectedStart,detectedStart 
    from 
        ExpectedPresence e inner join
        DetectedPresence d on
        e.staffID = d.staffID
    where
       detectedStart > expectedStart;

    insert into difference (expectedEnd, detectedEnd)
    Select  
        expectedEnd,detectedEnd 
    from 
        ExpectedPresence e inner join
        DetectedPresence d on
        e.staffID = d.staffID
    where
        detectedEnd < expectedEnd
于 2012-11-15T19:55:58.910 に答える