Jump to content

Historische Daten aber wie


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

Empfohlene Beiträge

Erst mal Hallo zusammen!

Ich habe folgende Problemstellung.

Wir verwalten aktuell ca 450.000 Artikel, jeweils zum 1. und 15. eines Monats werden bei einzelnen Artikeln Preise (Ek, Vk usw) geändert, es kommen Neue hinzu bzw. Alte fliegen raus.

 

Kann mir jemand auf die Sprünge helfen, wie ich es anstellen kann eine Struktur zu entwickeln um zu jedem beliebigen Zeitpunkt die Preise für Artikel xyz zu erhalten?

 

Historisch bedingt, werden aktuell alle 450.000 Artikel mit dem jeweilig gültigen Preis weggeschrieben was die DB unglaublich aufbläst.

 

Grüße

T.

 

PS: Achja, DB ist Server 2012 Std.

bearbeitet von Taotse
Link zu diesem Kommentar

Im Prinzip benötigst Du jeweils eine kleine EK bzw. VK Historie zu jedem Artikel als Tabelle. Ob es ein oder zwei Tabellen sein müssen bzw. sollten hängt von dem Rest der DB ab.

 

So könnte es aussehen:

[Konzern/Firma/Mandant/Lagerort etc.], [ArtikelNr], [EK/VK Kennzeichen], [Preis ggf. Währung], [gültig von], [gültig bis], eventuell noch Zusätze wie [geändert von], [geändert am], [status] etc.

Link zu diesem Kommentar

Hallo Dunkelmann!

Vielen Dank für die Antwort.

 

im Groben enstpricht das was Du vorschlägst unserem aktuellen Schema. Problem an der Sache ist folgendes -

 

Nehmen wir an, Artikel A wurde am 01.06.2012 ins Sortiment aufgenommen und hat seither den gleichen Preis. Artikel B wurde am 01.01.2012 ins Sortiment aufgenommen, hatte am 15.03. eine Preiserhöhung und am 15.04.2012 eine Preissenkung. Abfrage (vereinfacht) des gültigen Preises zum 01.09.2012:

 

SELECT a.ArtikelNr, b.Ek, b.Vk FROM dbo.Artikel a INNER JOIN dbo.Preise b ON (a.GUID=b.ArtikelID) WHERE a.ArtikelNr IN (A, B) AND AenderungsDatum='01.09.2012'

 

Ergebnis dürfte NULL sein.

 

Grüße

T.

Link zu diesem Kommentar

Im Beispiel von von Dunkelmann gibt es das Gültig von / Gültig bis. Dort kannst du filtern nach Datum größer als "Gültig von" und Datum kleiner als "Gültig bis".

 

Oder du pflegst nur das Änderungsdatum, sortierst nach diesem, filterst nach alles was vor dem gesuchten Datum ist und nimmst den ersten Eintrag (oder so ähnlich, falls ich etwas durcheinandergekommen bin beim größer und kleiner...)

Link zu diesem Kommentar

Moin,

 

wie Dukel schon schrieb, gibt es min. 2 Varianten:

 

1. Mit DatumVon und DatumBis in der Preistabelle

- es muss bei der Eingabe drauf geachtet werden, dass keine "Lücken" im Datum entstehen

- einfachere Abfrage

 

2. ÄnderungsDatum

- einfacheres Eingeben

- kompliziertere Abfrage

 

Beispiel für Nr. 2:

 

T_Artikel

--------------------
[ArtikelID] Primary Key
[ArtikeName]

T_Preis

---------------------
[PreisID] Primary Key
[ArtikelID] Foreign Key, verweist auf ArtikelID in Tabelle T_Artikel
[GueltigAb]
[Preis]


Abfrage zum ermitteln des Preises zum Zeitpunkt XX (könnte auch in der Zukunft liegen):

SELECT a.ArtikelID, a.ArtikelName,
      (SELECT TOP 1 p.Preis
       FROM T_Preis p
       WHERE a.ArtikelID = p.ArtikelID
       AND p.GueltigAb <= XX
       ORDER BY p.GueltigAb DESC
      )  AS Preis
FROM T_Artikel a
WHERE a.ArtikelID = 123456789
 

Artikel die noch keinen Preis haben, werden mit NULL in der Spalte [Preis] angezeigt.

 

Gruß Kai

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...