Jump to content

SQL Abfrage - Datum was am nächsten liegt


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo,

 

ich möchte eine Abfrage per SQL durchführen. In dieser soll er mir einen Wert auslesen, welcher am nahesten eines bestimmten Datums liegt.

 

D.h. es gibt Einträge in der Datenbank wie folgt:

 

Maschine - Zähler - Datum

12345 - 100 - 15.11.2014

12345 - 80 - 12.11.2014

12345 - 50 - 03.11.2014

12345 - 20 - 25.10.2014

 

Die Abfrage soll mir nun bspw. nur den Zähler was am nächsten zum 01.11.2014 liegt anzeigen.

Wie bekomme ich das hin?

 

Ich bin am verzweifeln.

 

Danke

Link zu diesem Kommentar

Mit der Funktion DATEDIFF http://msdn.microsoft.com/de-de/library/ms189794.aspx kannst Du dir in einer weiteren Spalte den Abstand vom 01.11. bis zum 03.11.2014 anzeigen lassen. Mit Hilfe der MIN Funktion http://msdn.microsoft.com/de-de/library/ms179916.aspx hast Du dann nur den einen passenden Wert in der SELECT-Abfrage.

bearbeitet von Sunny61
Link zu diesem Kommentar

so ich habe mal probiert:

SELECT a.Bezeichnung, m.SerienNummer, m.MaschinenNummer, DATEDIFF(DAY,mz.Meldedatum,'01.05.2014') AS Differenz, (SELECT mz.ZaehlerstandNeu WHERE mz.Zaehler = 'Z1') AS Z1, (SELECT mz.ZaehlerstandNeu WHERE mz.Zaehler = 'Z2') AS Z2 
FROM Maschinen m

INNER JOIN Anschriften an
ON an.KontaktNummer = m.KundenNummer

INNER JOIN Artikel a
ON a.Artikelnummer = m.ArtikelNummer

INNER JOIN MPSMaschinen mps
ON mps.MaschinenNummer = m.MaschinenNummer

INNER JOIN MaschinenOrte mo
ON mo.Maschinennummer = m.MaschinenNummer

INNER JOIN MaschinenZaehler mz
ON mz.Maschinennummer = m.MaschinenNummer


WHERE m.Kundennummer = '220238' AND (mz.Zaehler = 'Z1' OR mz.Zaehler = 'Z2')
GROUP BY a.Bezeichnung, m.SerienNummer, m.MaschinenNummer, mz.Meldedatum, mz.ZaehlerstandNeu, mz.Zaehler
ORDER BY m.MaschinenNummer desc

Er gibt nun auch schön die Differenz aus. Aber wie bekomme ich es nun hin, dass er mir nur die mit den wenigsten Differenztagen ausgibt pro Maschinennummer und Z1 und Z2?

Ich danke für Eure Hilfe!

Link zu diesem Kommentar

das ist mein Problem, ich weis nicht wo und wie ich diese einbinden muss


habe das hier noch versucht:

 

WHERE m.Kundennummer = '220238' AND (mz.Zaehler = 'Z1' OR mz.Zaehler = 'Z2') AND MIN(Differenz)

 

dann kommt die Meldung:

 

In der Nähe von 'GROUP' wurde ein nicht boolescher Ausdruck in einem Kontext angegeben, in dem eine Bedingung erwartet wird.

Link zu diesem Kommentar

das bringt mir ehrlich nichts, die seite bin ich hoch und runter gegangen.

Mit meiner oben angegebenen Abfrage kommt zumindest mal das was ich brauche an Informationen nur zu viele Ergebnisse, weil ja nicht gebrenzt auf das Datum.

 

Ich müsste nur noch das MIN einbauen, nur wie fehlt mir. Und die Beispiele bringen mich nicht weiter.

 

Wäre nett, wenn Du mir das MIN in meine Abfrage einbauen könntest und evtl. eine Erklärung warum.

 

Danke

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...