![]() |
Datenbank: Firebird • Version: 3.x • Zugriff über: IBDAC
Datensätze gruppieren: Wie Feldwert nach Bedingung setzen?
Hallo,
ich habe diese Tabelle:
Code:
Ich möchte nun alle mehrfach vorhandenen gleichen Adressen ermitteln. Dabei sollen gleiche Adressen zusammen gruppiert werden und mitsamt den mehrfach vorhandenen IDs ausgegeben werden. Das mache ich so:
Adressen
----------------- ID Integer Aktiv Bool Firma Varchar Strasse Varchar Ort Varchar ...
Code:
Das funktioniert. Nun möchte ich dazu aber zusätlzich das Feld "Aktiv" dazu ausgeben und zwar so:
select coalesce(Firma, '') as Firma, coalesce(Strasse, '') as Strasse, coalesce(Ort, ''), list(ID) as IDs, from Adressen
group by Firma, Strasse, Ort having count(*) > 1 Wenn alle Adressen einer Gruppe aktiv=true haben soll in der Spalte Aktiv true stehen. Wenn alle Adressen einer Gruppe aktiv=false haben soll in der Spalte Aktiv false stehen. Wenn bei den Adressen einer Gruppe aktiv unterschiedlich ist, soll in der Spalte Aktiv true stehen. Wie mache ich das? |
AW: Datensätze gruppieren: Wie Feldwert nach Bedingung setzen?
Du willst dieses Felder zusammen ziehen, also brauchst du eine Aggregatfunktion.
![]() Hier würde ich es mal mit
SQL-Code:
versuchen.
MAX(Aktiv)
Oder notfalls dürfte auch
SQL-Code:
gehen, also "True", "False" oder "False,True" (oder so).
LIST(DISTINCT Aktiv)
Falls Diese keinen BOOL mögen, dann eben mal kurz nach INT oder VARCHAR konvertieren und anschließend wieder zurück. PS: denkbar wäre auch alles True=True (Haken), alles False=False (leer) und gemischt=NULL (grau). |
AW: Datensätze gruppieren: Wie Feldwert nach Bedingung setzen?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:01 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 by Thomas Breitkreuz