![]() |
Datenbank: JET • Version: 4.0 • Zugriff über: Access
Gruppierung realisieren
Habe ein Problem bei SQL Abfragen.
Habe eine Tabelle "Positionen". Hier gibt es die für mich wichtigen Attribute "Titel", "Text", "Minuten", "Typ", "Belegnr" Ich habe vor die Minuten der einzelnen Titel zu summieren. Das mache ich also mit
SQL-Code:
Soweit sogut...
SELECT titel, round(sum(minuten)/60) as Stunden from positionen where belegnr="A056178" group by titel
Jetzt wird mir sowas angezeigt:
Code:
Jetzt muss ich aber den "Text" des Titels, in dem ein "T" im Feld "Typ" steht, mit in das Ergebnis packen.
Titel Stunden
01 28 02 10 03 12 04 14 05 14 ... Soll also so später so aussehen:
Code:
Das Problem ist, dass das T als Merkmal für einen neuen Titel steht. Also nicht alle Positionen innerhalb der Titel-Gruppierung haben das "T" im "Typ".
Titel Stunden Text Typ
01 28 Keller T 02 10 Dach T 03 12 Garten T 04 14 Wohnzimmer T 05 14 Schlafzimmer T ... Jemand ne Idee, wie ich sowas realisieren könnte? Habe schon ein bisschen rumprobiert, aber keine logische Lösung gefunden. |
Re: Gruppierung realisieren
schon mal select ... having angesehen?
|
Re: Gruppierung realisieren
Ja, werden dann aber nicht nur die Minuten zusammengezählt, die auch ein "T" im Feld "Typ" stehen haben? Das wäre dann also pro Titel ein Datensatz. So ist das ja nicht gemeint...
|
Re: Gruppierung realisieren
Keine Ahnung was du da genau haben willst. Mir ist das noch nicht wirklich klar.
Hier mal ein Versuch...
SQL-Code:
oder vielleicht so...
SELECT titel, ROUND(SUM(minuten) / 60) AS Stunden, text
FROM positionen WHERE belegnr = 'A056178' AND typ = 'T' GROUP BY titel, text
SQL-Code:
SELECT p1.titel, ROUND(SUM(p1.minuten) / 60) AS Stunden, p2.text
FROM positionen p1 LEFT JOIN positionen p2 ON p1.titel = p2.titel AND p2.typ = 'T' WHERE p1.belegnr = 'A056178' GROUP BY p1.titel, p2.text |
Re: Gruppierung realisieren
Danke für die Hilfe.
Hat aber leider alles net geklappt... Habe jetzt eine etwas unschöne Lösung gefunden:
SQL-Code:
Das klappt so, wie ich es möchte... Ist halt nicht so elegant...
SELECT titel, round(sum(minuten)/60) as Stunden,
(select Typ from positionen where belegnr="A056178" and titel=tab1.titel and Typ="T") as Typ, (select left(positionstext,255) from positionen where belegnr="A056178" and titel=tab1.titel and Typ="T") as PosiText from positionen as tab1 where belegnr = "A056178" group by titel |
Re: Gruppierung realisieren
Hallo,
angesichts der nicht korrekt normalisierten Tabelle würde ich den zweiten Vorschlag aus Beitrag #4 von Thorsten aufgreifen - der muss nur ein wenig an ACCESS angepasst werden:
SQL-Code:
Freundliche Grüße
SELECT p1.titel, ROUND(SUM(p1.minuten)/60) AS Stunden, p2.text
FROM positionen AS p1 INNER JOIN positionen AS p2 ON p1.titel=p2.titel AND p1.belegnr = p2.belegnr WHERE p2.typ='T' AND p1.belegnr = 'A056178' GROUP BY p1.titel, p2.text |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:32 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