0

SQL Server 2005 の使用

表1

テーブルを離れる

ID startDate EndDate

001 21/01/2013 20/02/2013
002 24/01/2013 13/02/2013

表2

ID DATE  TIME STATUS

001 21/01/2013 NULL ANNUAL
001 22/01/2013 NULL 
001 23/01/2013 NULL 
001 24/01/2013 NULL  Holiday (Sunday)
001 25/01/2013 02:00 Present

表2では、年次休暇の状態がシステムに表示された後、ステータスを欠席として表示したい

1) 年次休暇の後、年次休暇は利用可能な時間まで延長されるため、システムは「ABSENT」と表示します。

表 1 の年次休暇の終了日と表 2 の利用可能な時間の行の間に不在としてシステムが表示される

期待される出力

ID DATE  TIME STATUS

001 21/01/2013 NULL ANNUAL
001 22/01/2013 NULL Absent
001 23/01/2013 NULL Absent
001 24/01/2013 NULL  Absent 
001 25/01/2013 02:00 Present

次の条件のクエリを作成する方法。クエリのヘルプが必要です。

4

1 に答える 1

0

あなたの質問を理解するのはかなり難しいですが、これはどれくらい近いですか?

SELECT 
T2.ID, T2.Date, T2.Time, 
CASE 
WHEN T2.Date = T1.startDate THEN 'Annual'
WHEN T2.Date BETWEEN T1.startDate AND T2.endDate THEN 'Absent'
END Status
FROM 
Table2 T2
LEFT OUTER JOIN
Table1 T1
ON  T2.ID = T1.ID
AND T2.Date BETWEEN T1.startDate AND T2.endDate
WHERE T2.ID = '001'
于 2013-03-11T05:24:45.960 に答える