sql fiddle demo hereJak mogę grupować wyniki według dnia w zapytaniu z SQL Server?
mam tej struktury tabeli dla tabeli Dziennik:
CREATE TABLE Diary
(
[IdDiary] bigint,
[UserId] int,
[IdDay] numeric(18,0),
[IsAnExtraHour] bit
);
INSERT INTO Diary ([IdDiary], [UserId], [IdDay], [IsAnExtraHour])
values
(51, 1409, 1, 0),
(52, 1409, 1, 1),
(53, 1409, 3, 0),
(54, 1409, 5, 0),
(55, 1409, 5, 1),
(56, 1408, 2, 0);
i to strukturę DiaryTimetable tabeli:
CREATE TABLE DiaryTimetable
(
[IdDiary] bigint,
[Hour] varchar(50)
);
INSERT INTO DiaryTimetable ([IdDiary], [Hour])
VALUES
(51, '09:00'),
(51, '09:30'),
(51, '10:00'),
(51, '10:30'),
(51, '11:00'),
(52, '15:00'),
(52, '15:30'),
(52, '16:00'),
(52, '16:30'),
(52, '17:00'),
(53, '11:00'),
(53, '11:30'),
(53, '12:00'),
(53, '12:30'),
(53, '13:00'),
(54, '10:00'),
(54, '10:30'),
(54, '11:00'),
(54, '11:30'),
(54, '12:00'),
(55, '16:00'),
(55, '16:30'),
(55, '17:00'),
(55, '17:30'),
(55, '18:00'),
(56, '15:00'),
(56, '15:30'),
(56, '16:00'),
(56, '16:30'),
(56, '17:00');
użyłem tej kwerendy, aby uzyskać max godzinę i min godzinę dla użytkownika 1409, aby uzyskać dla każdego dnia czas, który wchodzi i czas, który opuści pracę. Idday odpowiada liczbie dni tygodnia. Na przykład 1 jest poniedziałek, 2 wtorek itd ...
SELECT d.IdDiary, d.IdDay, MIN(Hour) as 'Start Time', MAX(Hour) as 'End Time', IsAnExtraHour
FROM Diary AS d
LEFT JOIN DiaryTimetable AS dt ON d.IdDiary = dt.IdDiary
where userid = 1409
GROUP BY d.IdDiary, d.IdDay, IsAnExtraHour
Ta kwerenda dać ten wynik:
chcę uzyskać ten wynik:
Day Start Time End Time Start Extra Time End Extra Time
----- ---------- -------- --------------- ---------------
Monday 09:00 11:00 15:00 17:00
Wednessday 11:00 13:00
Friday 10:00 12:00 16:00 18:00
I kolumna (IsAnExtraHour) ta kolumna wskazuje, czy ten wiersz ma dodatkowe godziny w ciągu dnia, na przykład praca rozpoczynająca pracę w poniedziałek od 09:00 do 11:00, a następnie działa ponownie po południu o 15: 00 do 17:00, więc chcę wiedzieć, jak pogrupować te godziny w tym samym rzędzie, mam nadzieję, że udało mi się jasno wyrazić, akceptuję sugestie dzięki.
Tak należy zadawać pytania SQL. Wszyscy robią tak, jak Esraa_92! – Quassnoi
Dziękujemy za komentarz ;-D –
Nie używaj pojedynczych cudzysłowów dla aliasów kolumn. Aby uniknąć pomyłek i trudnych do znalezienia błędów, powinieneś używać pojedynczych cudzysłowów tylko dla ciągów i stałych daty/czasu. –