Wpadłem na coś takiego, ale z jakiegoś powodu nie działa :|
Uproszczony schemat:
select employeeID, date,
(case when isOut = 0 then [time] else null end) as [in],
(case
when isOut = 0 and (select top 1 ve.isOut from V_Widok ve
where ve.employeeID = employeeID and
ve.date>date
order by date
) = 1
then (select top 1 ve.[time] from V_Widok ve
where ve.employeeID = employeeID and
ve.date>date
order by date)
else
(case when isOut = 1 then [time] else null end) end) as out
from V_Widok
order by employeeID, date, out, [in]
Efektem tego zapytania jest coś takiego:
1 2009-03-10 11:00 NULL
1 2009-03-10 NULL 11:30
1 2009-03-10 11:45 NULL
1 2009-03-10 NULL 15:00
1 2009-03-10 NULL 16:00
A ja walczę, żeby uzyskać coś takiego:
1 2009-03-10 11:00 11:30
1 2009-03-10 11:45 15:00
1 2009-03-10 NULL 16:00
No i wg mnie powyższe pytanie powinno działać. Ale nie działa :/
(jeśli chodzi o podzapytania to zwracają to, co powinny)