![]() |
Datenbank: ADS • Version: 10 • Zugriff über: Delphi
Max(datum) min(Datum)
Hallo zusammen,
ich möchte mir, aus einer Datenbank für jeden Tag, die früheste und die späteste Zeit ausgeben lassen. An einem Tag können mehrere Buchungen vorhanden sein. Beispiel: Datum -- Kommen -- Gehen -- 01.09.2011-- 05:00 -- 14:00 01.09.2011-- 14:01 -- 18:00 02.09.2011-- 08:00 -- 15:00 03.09.2011-- 07:00 -- 12:00 03.09.2011-- 12:00 -- 14:00 03.09.2011-- 14:00 -- 18:00 Das sollte als Ergebnis rauskommen: 01.09.2011--05:00--18:00 02.09.2011--08:00--15:00 03.09.2011--07:00--18:00 Mit
Code:
kann ich mir für ein festhinterlegtes Datum die früheste und späteste Zeit ermitteln.
SELECT
MIN(CONVERT(CONVERT(Datum + IFNULL(Me1Day, 0), SQL_CHAR) + ' ' + CONVERT(Me1, SQL_CHAR), SQL_TIMESTAMP)) as Kommen, MAX(CONVERT(CONVERT(Datum + IFNULL(Me2Day, 0), SQL_CHAR) + ' ' + CONVERT(Me2, SQL_CHAR), SQL_TIMESTAMP)) as Gehen FROM Buchungen WHERE ID_Personal = 88 and Datum = '01.09.2011' Ich möchte aber gerne, für jeden Tag des Monats, die früheste und späteste Zeit haben. Kann mir jemand weiterhelfen? |
AW: Max(datum) min(Datum)
Sind das drei separate Felder in der Tabelle? Wenn ja, dann:
Code:
select
datum , min(kommen) , max(gehen) from buchungen where ... group by datum |
AW: Max(datum) min(Datum)
Zitat:
SQL-Code:
try drop table #buchungen; catch all end try;
create table #buchungen(datum date, kommen time, gehen time); insert into #buchungen values ('01.09.2011','05:00','14:00'); insert into #buchungen values ('01.09.2011','14:01','18:00'); insert into #buchungen values ('02.09.2011','08:00','15:00'); insert into #buchungen values ('03.09.2011','07:00','12:00'); insert into #buchungen values ('03.09.2011','12:00','14:00'); insert into #buchungen values ('03.09.2011','14:00','18:00'); select datum, min(kommen), max(gehen) from #buchungen group by 1; |
AW: Max(datum) min(Datum)
Und das Datumsliteral solltet Ihr mal angleichen, sonst funktioniert es nur bei einer deutschen Locale.
Code:
WHERE ID_Personal = 88 and Datum = '2011-09-01'
Code:
insert into #buchungen values ('2011-09-01','05:00:00','14:00:00');
|
AW: Max(datum) min(Datum)
besten dank.
Wieso auch kompiliziert, wenns so einfach geht. Lg David |
AW: Max(datum) min(Datum)
Hab doch noch ein Problem...
Es soll zusätzlich noch für jeden Tag die BSumme zusammengefasst werden. Datum -- Kommen -- Gehen -- BSumme -- AuftragNr 01.09.2011-- 05:00 -- 14:00 -- 540 -- 01.09.2011-- 14:01 -- 18:00 -- 320 -- 12345 02.09.2011-- 08:00 -- 15:00 -- 420 -- 12345 03.09.2011-- 07:00 -- 12:00 -- 200 -- 03.09.2011-- 12:00 -- 14:00 -- 120 -- 12345 03.09.2011-- 14:00 -- 20:00 -- 300 -- 12345 Ergebnis: 01.09.2011 | 05:00 | 18:00 | 320 02.09.2011 | 08:00 | 15:00 | 420 03.09.2001 | 07:00 | 18:00 | 420 Hoffe ihr versteht was ich meine, denn wenn ich einfach nur sum(BSumme) mache, addiert er auch die Zeiten dazu, die nicht auf einen Auftrag gebucht worden sind. Ich möchte aber nur die addieren, die auf einen Auftrag gebucht sind. |
AW: Max(datum) min(Datum)
Moin, Moin
das musst Du in der where / and Bedingung Deines SQL-Statements mit angeben, also in etwa so :
Delphi-Quellcode:
Beste Grüße
select sum(BSumme)
from #buchungen where AuftragNr is not null; Michael |
AW: Max(datum) min(Datum)
SQL-Code:
SELECT datum,
MIN(kommen) start, MAX(gehen) ende, SUM(CASE WHEN AuftragNr IS NULL THEN 0 ELSE BSumme END) BSumme FROM buchungen GROUP BY datum |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:34 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz