« Keine Ehre - Kein Ehrensold #Wulff | Main| SDLC - Tagebuch Eintrag (1) »

Rank() Over .... jetzt mal was anständiges ??

8
Kategorie  
Ich hatte mal einen Beitrag geschrieben, da war ein "ziemlich" konstruiertes Beispiel drin, welches die T-SQL-Funktion Rank() benutzt hat ....

Der hier war es ..... Beitrag ....

Na ja, jetzt habe ich die Rank() mal bei was nützlichem gebraucht .....
Also habe mit folgendes praktisches Beispiel ausgedacht (Vorsicht Tabellenstruktur nicht normalisiert )

Es gibt eine Tabelle ProductOrders, welche das Produkt und den Bestelltermin enthält -> hier ein Auszug
Product   ProductOrder
A 2011-08-01 00:00:00.000
A 2011-02-11 03:27:43.800
B 2010-03-09 12:39:44.823
C 2010-11-11 11:14:20.360

         
Dann gibt es noch eine Tabelle ProductPrice mit den Preisen, die folgende Struktur hat
Product PriceValidFrom Price
A 2010-03-21 19:15:03.923 82,2264507007496
B 2010-02-28 10:58:20.763 25,3385193101747
C 2011-08-26 13:28:29.630 1,87757239206667
A 2011-03-11 06:55:09.740         53,7625257144062


Aufgabe ist es nun zu jeder Order den "gültigen Preis" zu suchen, in Deutsch ...

Suche zu jeder Produkt (Order) aus der ProductOrder Tabelle  den Preis aus der ProductPrice Tabelle, bei der dem grössten PriceValidFrom Datum entspricht, was kleiner als das ProductOrder Datum ist ....

Hört sich kompliziert an .... aber in SQL ist es einfach hinzuschreiben ->

selectproduct,productorder,pricevalidfrom,price from
(
        select
                        po.product,
                        po.productorder,
                        pp.pricevalidfrom,
                        pp.price,
                        rank() over (partition bypp.product,po.productorder orderby PriceValidFromdesc) asrank
                from
                        productorders po, ProductPricepp
                where
                        pp.Product =po.Product and
                        po.ProductOrder >=pp.PriceValidFrom
)tmp
whererank = 1

So jetzt ist Sonntag abend und gleich kommt NAVI CIS .....

Gruß JJR
P.S.: Angenehmen Start in den Rosenmontag

Mach einen Kommentar

:-D:-o:-p:-x:-(:-):-\:angry::cool::cry::emb::grin::huh::laugh::lips::rolleyes:;-)

Amazon


Impressum

Firmenname: Peanuts-Soft
Straße Nummer: Biinger Strasse 8
PLZ Ort: 55263 Wackernheim
Telefon: +491772134526
E-Mail: joerg.reck @ peanuts-soft.de
Disclaimer: Peanuts-Soft übernimmt keine Garantie dafür, dass die auf dieser Website bereitgestellten Informationen vollständig, richtig und stets aktuell sind. Dies gilt auch für alle Links, auf die verwiesen wird. Peanuts-Soft ist für die Inhalte, auf die per Link verwiesen wird, nicht verantwortlich. Peanuts-Soft haftet nicht für konkrete, mittelbare und unmittelbare Schäden oder Schäden, die durch fehlende Nutzungsmöglichkeiten, Datenverluste oder entgangene Gewinne – sei es aufgrund der Nichteinhaltung vertraglicher Verpflichtungen, durch Fahrlässigkeit oder eine andere unerlaubte Handlung – im Zusammenhang mit der Nutzung von Dokumenten oder Informationen bzw. der Erbringung von Dienstleistungen entstehen, die auf dieser Web Site zugänglich sind.
Datenschutz: Inhalt und Gestaltung der Internetseiten sind urheberrechtlich geschützt. Eine Vervielfältigung der Seiten oder deren Inhalte bedarf der vorherigen schriftlichen Zustimmung von Peanuts-Soft.


Locations of visitors to this page

Powered By

Domino BlogSphere
Version 3.0.2