Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Max(datum) min(Datum) (https://www.delphipraxis.net/163271-max-datum-min-datum.html)

Metallicwar 22. Sep 2011 12:40

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:
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'
kann ich mir für ein festhinterlegtes Datum die früheste und späteste Zeit ermitteln.
Ich möchte aber gerne, für jeden Tag des Monats, die früheste und späteste Zeit haben.
Kann mir jemand weiterhelfen?

tsteinmaurer 22. Sep 2011 12:55

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

joachimd 22. Sep 2011 12:58

AW: Max(datum) min(Datum)
 
Zitat:

Zitat von Metallicwar (Beitrag 1126013)
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.

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;

Union 22. Sep 2011 13:02

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');

Metallicwar 22. Sep 2011 13:08

AW: Max(datum) min(Datum)
 
besten dank.
Wieso auch kompiliziert, wenns so einfach geht.
Lg David

Metallicwar 22. Sep 2011 15:58

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.

jaevencooler 22. Sep 2011 16:32

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:
select sum(BSumme)
from #buchungen
where AuftragNr is not null;
Beste Grüße
Michael

omata 23. Sep 2011 01:03

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 01:06 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz