AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Bestimmt Datensätze anzeigen
Thema durchsuchen
Ansicht
Themen-Optionen

Bestimmt Datensätze anzeigen

Ein Thema von Dumpfbacke · begonnen am 3. Jul 2013 · letzter Beitrag vom 5. Jul 2013
Antwort Antwort
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.666 Beiträge
 
Delphi 12 Athens
 
#1

AW: Bestimmt Datensätze anzeigen

  Alt 3. Jul 2013, 19:22
Ungetestet:
SQL-Code:
SELECT
  ID, Wert1
FROM
  Tabelle A
WHERE
  Wert1 IS NOT NULL
AND
  Wert1 = (
    SELECT
      MAX(Wert1)
    FROM
      Tabelle
    WHERE
      ID = A.ID
    )
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Dumpfbacke

Registriert seit: 10. Mär 2005
Ort: Mitten in Deutschland
335 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: Bestimmt Datensätze anzeigen

  Alt 3. Jul 2013, 19:43
Danke für die Info, doch leider geht es nicht. Bei Deinem Beispiel kommt hier die ID 2 mit raus. Es gibt ja eine Zeile bei der in Wert1 ein Datum steht und das zeite ist logischerweise dann auch das selbe. Ich hatte schon Zweifel an mir. Ich bin hier schon seit drei Stunden an dem Problem und es kann jemand innerhalb von Mitnuten lösen (Was mich jedoch sehr gefreut hätte).
Tanja
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#3

AW: Bestimmt Datensätze anzeigen

  Alt 3. Jul 2013, 20:29
Suchst Du sowas?
Code:
select max(wert1) As Wert, id
from tabelle
where wert1 is not null
group by id
order by id
oder ist Null quasi größer als jedes beliebige Datum anzusehen und falls vorhanden soll die entsprechende ID nicht ausgegeben werden?

Unter Oracle könnte das eventuell so gehen:
Code:
select * from (
  select max(nvl(wert1,To_Date('31.12.9999')) As Wert, id
  from tabelle
  group by id
)
where wert < To_Date('31.12.9999')
order by id
Wenn der Inhalt einer Spalte Null ist, so ersetzt nvl dieses Null durch den angegebenen Wert. Kennt Firebird eine entsprechende Funktion? Wenn nicht, diese selber bauen.

Geändert von nahpets ( 3. Jul 2013 um 20:41 Uhr) Grund: Text um Frage ergänzt.
  Mit Zitat antworten Zitat
Dumpfbacke

Registriert seit: 10. Mär 2005
Ort: Mitten in Deutschland
335 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: Bestimmt Datensätze anzeigen

  Alt 4. Jul 2013, 05:22
oder ist Null quasi größer als jedes beliebige Datum anzusehen und falls vorhanden soll die entsprechende ID nicht ausgegeben werden?

Unter Oracle könnte das eventuell so gehen:
Code:
select * from (
  select max(nvl(wert1,To_Date('31.12.9999')) As Wert, id
  from tabelle
  group by id
)
where wert < To_Date('31.12.9999')
order by id
Wenn der Inhalt einer Spalte Null ist, so ersetzt nvl dieses Null durch den angegebenen Wert. Kennt Firebird eine entsprechende Funktion? Wenn nicht, diese selber bauen.
Ja genau so soll es sein. Die ID 2 soll nicht ausgegeben sein. NULL soll größer sein als jedes Datum. Das ganze nur unter Firebird 2.5
Tanja
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.880 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Bestimmt Datensätze anzeigen

  Alt 4. Jul 2013, 08:07
NVL() gibt es als UDF. Besser ist es aber die builtin Fuktion COALESCE() zu verwenden
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.361 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Bestimmt Datensätze anzeigen

  Alt 4. Jul 2013, 14:17
Code:
select
  distinct
  id, (select max(y.wert) from test y where y.id = t.id) as wert
  from test t
  where not exists(select x.id from test x where x.id = t.id and x.wert is null)
oder

Code:
select
  t.id
, max(t.wert) as wert
  from test t
  where not exists(select x.id from test x where x.id = t.id and x.wert is null)
  group by t.id
Test natürlich in deinen Tabellennamen ändern.

Frank
Frank Reim

Geändert von dataspider ( 4. Jul 2013 um 14:24 Uhr)
  Mit Zitat antworten Zitat
Dumpfbacke

Registriert seit: 10. Mär 2005
Ort: Mitten in Deutschland
335 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

AW: Bestimmt Datensätze anzeigen

  Alt 4. Jul 2013, 19:05
Code:
select
  distinct
  id, (select max(y.wert) from test y where y.id = t.id) as wert
  from test t
  where not exists(select x.id from test x where x.id = t.id and x.wert is null)
oder

Code:
select
  t.id
, max(t.wert) as wert
  from test t
  where not exists(select x.id from test x where x.id = t.id and x.wert is null)
  group by t.id
Test natürlich in deinen Tabellennamen ändern.

Frank
Funktioniert leider beides nicht.
Tanja
Tanja
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:50 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