Witam,
Mam tabelę z danymi
Jak napisać zapytanie , które dla wierszy z etykietą "nieobecność" wyświetli wszystkie daty z zakresu od-do w przypadku kiedy data_od <> data_do?
Witam,
Mam tabelę z danymi
Jak napisać zapytanie , które dla wierszy z etykietą "nieobecność" wyświetli wszystkie daty z zakresu od-do w przypadku kiedy data_od <> data_do?
W MSSQL jest coś takiego
SELECT DATEDIFF(day, @data_od, @data_do);
Ale funkcja DATEDIFF wyświetla tylko liczbę dni pomiędzy datami a mi chodzi o wyświetlenie konkretnych dat zawartych pomiędzy dwoma datami a nie liczby dni.
Masz tablice z kalendarzem ? Wtedy to "piece of cake". Jak nie to masz więcej rzeźbienia, patrz topic:
https://stackoverflow.com/questions/23290454/get-all-dates-between-two-dates-in-sql-server
Chodzi o tabelę z kalendarzem?
Mam tabelę sys_kalendarz_dzien, która ma dane jak poniżej
No to jak masz tablice z kalendarzem to zwykły join:
select
k.data, t.*
from
tabela t
inner join kalendarz k on k.data between t.data_od and t.data_do
where
t.data_od <> t.data_do
and etykieta = 'nieobecnosc'
Dzięki Panczo.
Na razie mam to o co mi chodziło ale jeszcze będę miał pytania w tym temacie bo muszę jeszcze tabelę z wpisami obecność i nieobecność połączyć z sys_kalendzarz_dzien aby mieć wszystkie dni tzn. robocze i wolne w jednym. To jednak później jakbym nie dawał rady.