Frage

Ich habe eine Situation wie diese:

Tabelle: Funtable

ItemKey     ItemName     ItemPriceEffectiveDate    ItemPrice
11          ItemA        6/6/2009                  $500
12          ItemA        6/15/2009                 $550
13          ItemA        9/9/2009                  $450
14          ItemB        3/9/2009                  $150
15          ItemB        9/9/2009                  $350

Ich muss Folgendes tun:

Select
  ItemName as ItemDescription,
  (SELECT THE PRICE WITH THE LATEST EFFECTIVE DATE FROM TODAY THROUGH THE PAST)
FROM
  FunTable
GROUP BY
  ItemName

Die Ausgabe sollte Folgendes sein:

ItemA $550
ItemB $150

Daher können effektive Daten für die Preise von vor 5 Jahren bis 5 Jahre reichen. Ich möchte den Preis auswählen, der heute oder in der Vergangenheit wirksam ist (nicht in Zukunft! Es ist noch nicht effektiv). Es muss der "neueste" effektive Preis sein.

Irgendwelche Gedanken?

War es hilfreich?

Lösung

So etwas (habe keine Namen, aber du bekommst die Idee) ...

WITH A (Row, Price) AS
(
  SELECT Row_Number() OVER (PARTITION BY Item ORDER BY Effective DESC) AS [RN],
         Price FROM Table2
  WHERE Effective <= GETDATE()
)
SELECT * FROM A WHERE A.Row = 1

Andere Tipps

select ft.ItemName,
       price
from   (select   ItemName,
                 Max(ItemPriceEffectiveDate) as MaxEff
        from     FunTable
        where    ItemPriceEffectiveDate <= GETDATE()
        group by ItemName) as d,
       FunTable as ft
where  d.MaxEff = ft.ItemPriceEffectiveDate; 

Bearbeiten: Ändern Sie die Abfrage in die Arbeit, vorausgesetzt, der Preis ändert sich nicht mehr als einmal am Tag.

Ich kenne die Antwort nicht von der Spitze meines Kopfes, aber ich vermute, dass Sie meinen, ein Unterbild zu verwenden, was es zu einer sehr teuren Anfrage machen könnte.

Es kann einfacher sein, alle Daten in einem Verwendungscode zu ziehen, um sie selbst zu verarbeiten.

sollte funktionieren, wenn Sie dies tun

SELECT ItemName, MAX(ItemPriceEffectiveDate)
FROM FunTable
WHERE ItemPriceEffectiveDate < getDate()
GROUP BY ItemName
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top