Einzelnen Beitrag anzeigen

Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
646 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Daten nach Schichtzeitraum gruppieren

  Alt 2. Jun 2013, 08:22
Wenn du das wirklich nur für diese Auswertung brauchst, dann geht das so
Code:
CREATE TABLE PROD (
    ID      BIGINT NOT NULL,
    TXT     VARCHAR(80),
    ANZAHL  INTEGER,
    ZEIT    TIMESTAMP);

select
cast(prod.zeit-.25 as date) schichtdatum,
CASE
  WHEN (EXTRACT(HOUR FROM prod.ZEIT) BETWEEN 8 and 13) then 1
  WHEN (EXTRACT(HOUR FROM prod.ZEIT) BETWEEN 14 and 21) then 2
  else 3
end schicht,
sum(prod.anzahl)
from prod
group by 1,2
In Firebird kann das aber auch als berechnetes Feld erstellt werden, welches du
dann sogar via Expression Index indizieren kannst (War Thema bei der Schulung
in Wardenburg an den Tagen wo du nicht da warst , ist aber in Köln auch
wieder Thema). Berechnete Felder belegen keinen eigenen Speicherplatz (abgesehen
vom Eintrag in rdb$relation_fields) und können wie jedes andere Feld auch
in anderen SQLs benutzt werden.

Wenn deine Schicht bis 6:00 Uhr geht kann du das Tagesdatum der Schicht immer aus
"Zeit - 0.25" berechnen (Mittags um 12 ist 0.5, Nachmittags 18:00 Uhr ist 0.75 usw.)

Beispiel DDL

Code:
/******************************************************************************/
/****              Generated by IBExpert 02.06.2013 08:55:48               ****/
/******************************************************************************/

CREATE TABLE PROD (
    ID      BIGINT NOT NULL,
    TXT     VARCHAR(80),
    ANZAHL  INTEGER,
    ZEIT    TIMESTAMP,
    SCHICHTDATUM COMPUTED BY (CAST (ZEIT-0.25 as date)),
    SCHICHT COMPUTED BY (CASE
  WHEN (EXTRACT(HOUR FROM ZEIT) BETWEEN 8 and 13) then 1
  WHEN (EXTRACT(HOUR FROM ZEIT) BETWEEN 14 and 21) then 2
  else 3
end)
);

ALTER TABLE PROD ADD PRIMARY KEY (ID);

CREATE INDEX PROD_IDX1 ON PROD COMPUTED BY (SCHICHT);
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
IBExpert and Firebird Power Workshops jederzeit auch als Firmenschulung
  Mit Zitat antworten Zitat