Mam tabelę tblTask z danymi jak poniżej.
TID StartTime Uid WId
1 2011-06-06 09:30:00.000 10 1.5
2 2011-06-06 09:40:00.000 10 2.5
3 2011-06-06 09:50:00.000 10 1.8
4 2011-06-06 09:55:00.000 10 2.5
5 2011-06-06 10:30:00.000 10 1.5
6 2011-06-06 11:30:00.000 11 3.0
Muszę napisać do zapytania, aby obliczyć sumę (Wid) na podstawie różnicy czasu każdego czasu rozpoczęcia z innym czasem rozpoczęcia mającym różnicę czasu 1 godzinę lub bliską 1 godziny.
Na przykład weź czas pierwszego uruchomienia (2011-06-06 09:30:00.000); najbliższy czas rozpoczęcia mający <=1 h to (2011-06-06 10:30:00.000), a SUM(Wid) to 1,5+2,5+1,8+2,5+1,5 = 9,8. Podobnie muszę obliczyć dla wszystkich wierszy.
Pożądane wyjście będzie:
TID StartTime EndTime TimeDIff(Min) Uid WId
1 2011-06-06 09:30:00.000 2011-06-06 10:30:00.000 60 10 9.8
2 2011-06-06 09:40:00.000 2011-06-06 10:30:00.000 50 10 8.3
2 odpowiedzi
Czy to daje ci to, czego potrzebujesz?
SELECT t1.TID, min(t1.StartTime) AS StartTime, MAX(t2.StartTime) AS EndTime,
MAX(DATEDIFF(MI, t1.StartTime, t2.StartTime)) AS [TimeDiff(Min],
t1.Uid, SUM(t2.WId) AS WId
FROM MyTable t1
JOIN MyTable t2 on datediff(MI, t1.starttime, t2.StartTime) BETWEEN 0 AND 60
GROUP BY t1.TID, t1.Uid
ORDER BY t1.TID
Ten blok kodu poda różnicę czasu między StartTime
a EndTime
DECLARE @STARTDATE DATETIME = '10:15:45'
DECLARE @ENDDATE DATETIME = '14:00:15'
DECLARE @24DATE DATETIME
SET @24DATE = '23:59:59.000'
IF (@STARTDATE > @ENDDATE)
SELECT DATEADD(SECOND, 1, CONVERT(TIME(0), (@24DATE -(@ENDDATE - @STARTDATE))))
ELSE
SELECT CONVERT(TIME(0), ((@ENDDATE - @STARTDATE)))
Podobne pytania
Nowe pytania
sql
Structured Query Language (SQL) to język służący do wykonywania zapytań w bazach danych. Pytania powinny zawierać przykłady kodu, strukturę tabeli, przykładowe dane i znacznik używanej implementacji DBMS (np. MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2 itp.). Jeśli Twoje pytanie dotyczy wyłącznie konkretnego DBMS (używa określonych rozszerzeń / funkcji), użyj zamiast tego tagu tego DBMS. Odpowiedzi na pytania oznaczone tagiem SQL powinny używać standardu SQL ISO / IEC.