![]() |
Datenbank: Firebird • Version: 2,5 • Zugriff über: IBO
Eindeutige Datensätze ermitteln
Hallo,
vielleicht kann mir jemand einen Tipp geben. Ich habe eine Tabelle mit dem Feld ICD. In diesem Feld können gleichlautende Einträge sein. Ich benötige nun ein SQL Statement welches mir alle Datensätze der Tabelle liefert, aber nur einen Datensatz wo im Feld ICD gleichlautende Einträge sind. Normal kann ich ja die Datensätze so filtern: select icd from tbl_diagnose group by icd having count (*) > 1 Aber ich benötige noch das Feld Diagnosenr dazu. Dieses Feld ist ein Eindeutiger Wert der per Generator erzeugt wird. Wenn ich das Feld Diagnosenr dazu mache ist das Ergebnis leer. Ist ja auch logisch. Gibt es da einen Tipp. Vielen Dank im voraus. |
AW: Eindeutige Datensätze ermitteln
SQL-Code:
select distinct icd, Diagnosenr
from tbl_diagnose |
AW: Eindeutige Datensätze ermitteln
Und Diagnosenummer welches Datensatzes soll dann genommen werden?
|
AW: Eindeutige Datensätze ermitteln
An Baumina,
so geht es nicht, distinct geht nur auf einem Feld. Dein Statement bringt auch alle Datensätze wo icd mehrfach vorkommt. Ich möchte alle Datensaätze einer Tabelle, aber nur einen wo icd gleich ist. |
AW: Eindeutige Datensätze ermitteln
SQL-Code:
evtl. noch ein
select icd, Diagnosenr
from tbl_diagnose group by icd
SQL-Code:
order by icd, Diagnosenr
|
AW: Eindeutige Datensätze ermitteln
Das 1. Statement ist fehlerhaft und beim 2. bekommt er wieder alle.
Er beenötigt ein Aggegat, deshalb meien Frage, welchen DS er will ( ersten/letzten, kleinsten/größten, Durchschnitt, ...) |
AW: Eindeutige Datensätze ermitteln
Ich dachte er will alle, nur von den doppelten nur je einen.
Edit: ja statt dem Group by kann man auch min(Diagnosenr) machen, stimmt. |
AW: Eindeutige Datensätze ermitteln
Genau richtig, ich will alle Datensätze aber nur jeweils einen wo icd mehrfach ist.
|
AW: Eindeutige Datensätze ermitteln
So scheint es zu gehen, muss ich aber noch genauer testen.
select icd, min(Diagnosenr) as Nummer from tbl_diagnose group by icd |
AW: Eindeutige Datensätze ermitteln
Du kannst Dich 100%ig auf jeden SQL-Dialekt verlassen!
Nur den selbstprogrammierten Sachen musst Du stets mißtrauen! MfG |
AW: Eindeutige Datensätze ermitteln
Zitat:
(chapeau an Markus) Gruß K-H |
AW: Eindeutige Datensätze ermitteln
SQL-Code:
Aus der Tabelle werden jetzt alle Datensätze aufgelistet, bei denen 'icd' nicht eindeutig ist.
select * from tbl_diagnose
where icd in( select icd from tbl_diagnose group by icd having count (*) > 1 ) Ich gehe mal davon aus, das Firebird das so kann. |
AW: Eindeutige Datensätze ermitteln
Kannst Dir auch mal das
![]() |
AW: Eindeutige Datensätze ermitteln
Code:
Frank
select
d.icd , (select list(x.diagnosenr) from tbl_diagnose x where x.icd = d.icd) diagnosenr from ( select icd from tbl_diagnose group by icd having count (*) > 1 ) d [EDIT] Geht ja gar nicht, icd ist ja nicht eindeutig. Die Diagnosenummer kannst du ja nicht dahinter schreiben, es sei denn, diese ist auch pro icd eindeutig, dann geht first 1. Du kannst du die Liste der Nummern mit List(diagnosenr) dahinter schreiben... |
AW: Eindeutige Datensätze ermitteln
Moin :)
Wenn du alle Diagnosenummern brauchst, würde ich sowas hier versuchen:
Code:
Grüße,
select icd, list(diagnosenr)
from tbl_diagnose group by icd having count (*) > 1 Jan |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:07 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