2009-10-06 9 views
0

Utilisation de SQL Server 2000Comparer avec Dates et N ° de téléphone?

Je veux obtenir Table2.TimeIn Table2.TimeOut selon Table1.personid et aussi si Table1.Date = Table3.Date alors il devrait prendre un Table3.TimeIn, Table3.TimeOut.

3 Tables

Tableau 1

ID Date 

001 20090503 
001 20090504 
001 20090506 
002 20090505 
002 20090506 

ainsi de suite ...,

Tableau2

ID TimeIn TimeOut 

001 08:00:00 18:00:00 
002 08:00:00 21:00:00 

ainsi de suite ...,

Table3

ID Date TimeIn TimeOut 

001 20090504 10:00:00 22:00:00 
001 20090505 17:00:00 23:00:00 
002 20090505 12:00:00 21:00:00 

ainsi de suite ...,

Select Table1.ID, 
     Table1.Date, 
     Table2.TimeIn, 
     Table2.TimeOut 
    from Table1 
Inner Join Table2 on Table1.ID = Table2.ID 

Si Table1.Date = Table3.Date alors il devrait prendre Table3.TimeIn, Table3.TimeOut autre Table2.TimeIn, Table2.Timeout

Sortie prévue

ID Date TimeIn TimeOut 

001 20090503 08:00:00 18:00:00 
001 20090504 10:00:00 22:00:00 
001 20090506 08:00:00 18:00:00 
002 20090505 12:00:00 21:00:00 
002 20090506 08:00:00 21:00:00 

ainsi de suite ...,

Comment écrire une requête pour cette condition?

Répondre

3

horaire des employés fallback ?:

SELECT Table1.ID 
    ,Table1.Date 
    ,COALESCE(Table3.TimeIn, Table2.TimeIn) AS TimeIn 
    ,COALESCE(Table3.TimeOut, Table2.TimeOut) AS TimeOut 
FROM Table1 
INNER JOIN Table2 -- Always have an expected schedule for an employee 
    ON Table1.ID = Table2.ID 
LEFT JOIN Table3 -- May.may not have an actual schedule for an employee 
    ON Table3.ID = Table1.ID 
    AND Table3.Date = Table1.Date 
/* 
ORDER BY Table1.ID 
    ,Table1.Date 
*/ 
+0

trop vite pour moi; allait poster cette même chose :) –

Questions connexes