Witam !
Mam taki problem i w sumie nie wiem co z nim zrobić ponieważ moja znajomość sql-a ogranicza się do podstaw :/
Próbuje sobie pobrać tabelkę taką procedurą:
ALTER PROCEDURE [dbo].[PobierzCzas]
@UserID2 int,
@DataStart DateTime,
@DataKoniec DateTime
AS
SELECT rcp_uzytkownicy.Imie,rcp_uzytkownicy.Nazwisko,dbo.FixDate(rcp_zdarzenia.Czas_Start) AS 'Data Zdarzenia',
CONVERT(time, DATEADD(ss, DATEDIFF(ss, rcp_zdarzenia.Czas_Start, rcp_zdarzenia.Czas_Koniec),0),108)
AS [Czas (hh:mm)]
FROM rcp_zdarzenia INNER JOIN rcp_uzytkownicy
ON rcp_zdarzenia.ID_User = rcp_uzytkownicy.ID
WHERE ID_User = @UserID2 AND rcp_zdarzenia.Czas_Start BETWEEN @DataStart AND @DataKoniec
GROUP BY rcp_zdarzenia.ID_User,rcp_uzytkownicy.Imie,rcp_uzytkownicy.Nazwisko,dbo.FixDate(rcp_zdarzenia.Czas_Start),
CONVERT(time, DATEADD(ss, DATEDIFF(ss, rcp_zdarzenia.Czas_Start, rcp_zdarzenia.Czas_Koniec),0),108)
I to co mi wychodzi to coś takiego:
Imie Nazwisko Data Zdarzenia Czas (hh:mm)
Łukasz B. 2010-04-21 00:00:00.000 00:00:00.0000000
Łukasz B. 2010-04-21 00:00:00.000 00:01:00.0000000
Łukasz B. 2010-04-21 00:00:00.000 00:15:00.0000000
Łukasz B. 2010-04-21 00:00:00.000 00:16:00.0000000
Łukasz B. 2010-04-21 00:00:00.000 01:27:00.0000000
Łukasz B. 2010-04-21 00:00:00.000 22:01:00.0000000
Łukasz B. 2010-04-23 00:00:00.000 00:00:00.0000000
Łukasz B. 2010-05-15 00:00:00.000 01:40:00.0000000
Łukasz B. 2010-08-09 00:00:00.000 00:03:00.0000000
Łukasz B. 2010-08-09 00:00:00.000 02:59:00.0000000
Łukasz B. 2010-08-09 00:00:00.000 06:47:00.0000000
Łukasz B. 2010-09-09 00:00:00.000 00:03:00.0000000
Łukasz B. 2010-09-09 00:00:00.000 05:00:00.0000000
No i problem jest tego typu, że potrzebuje to zgrupować tak aby czas dla danego dnia był sumą czasów szczątkowych np:
Łukasz B. 2010-04-21 00:00:00.000 23:00:00.0000000
Łukasz B. 2010-04-23 00:00:00.000 00:00:00.0000000
i w sumie nie wiem co mam dalej z tym począć :/
Z drugiej jednak strony udaje mi się to ale przy rozdzieleniu godzin i minut czego wolałbym uniknąć:
ALTER PROCEDURE [dbo].[PobierzCzas]
@UserID2 int,
@DataStart DateTime,
@DataKoniec DateTime
AS
SELECT rcp_uzytkownicy.Imie,rcp_uzytkownicy.Nazwisko,dbo.FixDate(rcp_zdarzenia.Czas_Start) AS 'Data Zdarzenia',
CONVERT(int,SUM(ABS(DateDiff(MINUTE,rcp_zdarzenia.Czas_Start,rcp_zdarzenia.Czas_Koniec))))/60 AS 'H',
CONVERT(int,SUM(ABS(DateDiff(MINUTE,rcp_zdarzenia.Czas_Start,rcp_zdarzenia.Czas_Koniec))))%60 AS 'Min'
FROM rcp_zdarzenia INNER JOIN rcp_uzytkownicy
ON rcp_zdarzenia.ID_User = rcp_uzytkownicy.ID
WHERE ID_User = @UserID2 AND rcp_zdarzenia.Czas_Start BETWEEN @DataStart AND @DataKoniec
GROUP BY rcp_zdarzenia.ID_User,rcp_uzytkownicy.Imie,rcp_uzytkownicy.Nazwisko,dbo.FixDate(rcp_zdarzenia.Czas_Start)
--CONVERT(time, DATEADD(ss, DATEDIFF(ss, rcp_zdarzenia.Czas_Start, rcp_zdarzenia.Czas_Koniec),0),108) --use the LEFT,5 to drop the seconds portion, otherwise remove if hh:mm:ss is okay