SELECT kleinste größte

Alles zum SQL-Dialekt

Moderator: Moderatoren

Antworten
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

SELECT kleinste größte

Beitrag von Manfred »

HI,
ich habe eine Tabelle mit einer unbestimmten Anzahl an Sätzen. Jeder Satz hat ein Datum. Dieses Datumsfeld hat einen Index. Ich möchte nun ermtitteln, welches Datum der erste und der letzte Satz hat um dann über ein DISTINCT eine Listenauswahl von Anfangsmonat bis Endemonat zu erzeugen. Normalerweise würde ich bei DBF auf den Anfang springen das Datum merken und dann aufs Ende und daraus dann den Befehl

Code: Alles auswählen

SELECT DISTINCT SubString(DTos(datum),1,6) AS datum
FROM tabelle
WHERE datum >= anfang and <= ende
ORDER BY datum
erzeugen. Geht sowas direkt mit einem SQL Befehl?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
HaPe
1000 working lines a day
1000 working lines a day
Beiträge: 995
Registriert: So, 15. Nov 2015 17:44
Wohnort: 71665 Vaihingen-Enz
Hat sich bedankt: 17 Mal
Danksagung erhalten: 15 Mal

Re: SELECT kleinste größte

Beitrag von HaPe »

Hallo Manfred !
Geht sowas direkt mit einem SQL Befehl?
Das geht mit MIN und MAX:
SELECT MIN( DATUM ) AS MINDATUM, MAX( DATUM ) AS MAXDATUM FROM Tabelle
--
Hans-Peter
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: SELECT kleinste größte

Beitrag von Manfred »

Hi HaPe,
war mal wieder zu einfach für mich um da selbst drauf zu kommen. :banghead: :roll:
Danke.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
nightcrawler
1000 working lines a day
1000 working lines a day
Beiträge: 650
Registriert: Di, 24. Apr 2012 16:33
Wohnort: 72184 Weitingen
Hat sich bedankt: 3 Mal
Danksagung erhalten: 96 Mal
Kontaktdaten:

Re: SELECT kleinste größte

Beitrag von nightcrawler »

Das Ganze direkt auf dem Server:

Code: Alles auswählen

create procedure monate(mmin date, mmax date, monat date output)
begin
  declare @min timestamp;
  declare @max timestamp;
  @min = (select cast(min(mmin) as SQL_TIMESTAMP) from __INPUT);
  @max = (select cast(min(mmax) as SQL_TIMESTAMP) from __INPUT);
  @min = timestampadd(SQL_TSI_DAY, 1-DAY(@min), @min);
  while @min<=@max do
    INSERT INTO __OUTPUT (monat) VALUES(cast(@min as SQL_DATE));
    @min = timestampadd(SQL_TSI_MONTH, 1, @min); 
  end while;
end;
Anwendung, zB mit folgender Tabelle:

Code: Alles auswählen

create table datumswerte(id autoinc, datum date);
insert into datumswerte(datum) values ('2020-12-31'), ('2021-06-07'), ('2021-09-30'), ('2021-10-21');
sieht dann so aus:

Code: Alles auswählen

execute procedure monate((select min(datum) from datumswerte), (select max(datum) from datumswerte))
--
Joachim
Joachim Dürr Softwareengineering
https://www.jd-engineering.de
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: SELECT kleinste größte

Beitrag von Manfred »

ich habe das jetzt so gelöst

Code: Alles auswählen

SELECT DISTINCT SubString(Dtos(datum),1,6) AS datum
FROM tagesdienst
WHERE datum >= (SELECT min(datum) from tagesdienst) AND datum <= (SELECT max(datum) from tagesdienst)
ORDER BY datum
oder ist das keine gute Lösung?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: SELECT kleinste größte

Beitrag von Tom »

Mal für die komplett Doofen: Da Du Dich innerhalb ein und derselben Tabelle befindest - warum überhaupt der ganze Zinnober mit Min und Max? SELECT DISTINCT liefert Dir doch so oder so alle einzeln vorkommenden Daten, und mit dieser Min-Max-Abfrage grenzt Du die Tabelle nur auf sich selbst ein. Du müsstest ohne das WHERE auf exakt das gleiche Ergebnis kommen.
Oder? :wink:
Herzlich,
Tom
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: SELECT kleinste größte

Beitrag von Manfred »

:lol: :lol: :lol:
Tom, stimmt, das war wirklich was für Doofe.
Aber warum einfach, wenn es auch kompliziert geht? :lol: :D
Ich hatte anfänglich erst was ganz anderes vor, da wäre das nicht zu gebrauchen gewesen. Ich wollte zuerst eingrenzen. Dann fiel mir aber ein, das ich ruhig alle anzeigen kann, weil eh zwischendurch gelöscht wird was über ein gewisses Alter geht. Deshalb ist es mir auch nicht aufgefallen.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: SELECT kleinste größte

Beitrag von Tom »

Verstehe. 8)

Aber weil wir gerade so schön beim Thema sind - Joachim hat eine Stored Procedure ins Spiel gebracht, und Alaska empfiehlt tatsächlich Stored Procs als Workaround für die Filterprobleme in der PGDBE (die ansonsten wirklich der Hammer ist). Vielleicht könnten wir hier mal gemeinsam in einem kleinen Workshop durchspielen, wie man Stored Procedures für den PostGresServer als Ersatz für eigene Xbase-Funktionen schreibt. Das täte mich interessieren tun. Noch jemand?
Herzlich,
Tom
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: SELECT kleinste größte

Beitrag von Manfred »

ich kann zwar nur zuschauen, aber ich bin dabei.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: SELECT kleinste größte

Beitrag von AUGE_OHR »

hi,
Tom hat geschrieben: Mi, 22. Sep 2021 17:19PGDBE (die ansonsten wirklich der Hammer ist).
naja ... der "Hammer" ist mit 32-Bit ziemlich klein ...
gruss by OHR
Jimmy
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: SELECT kleinste größte

Beitrag von Marcus Herz »

32, 64,ich denke du wartest schon auf 128
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Antworten