Meine Tabelle:alle Zeilen auswählen, die mehr als eine ID in einem bestimmten Datum haben
Items | Price | UpdateAt
1 | 2000 | 02/02/2015
2 | 4000 | 06/04/2015
3 | 2150 | 07/05/2015
4 | 1800 | 07/05/2015
5 | 5540 | 08/16/2015
4 | 1700 | 12/24/2015
5 | 5200 | 12/26/2015
2 | 3900 | 01/01/2016
4 | 2000 | 06/14/2016
Wie Sie sehen können, ist dies eine Tabelle, die Elemente Preis sowie ihre alten Preis vor dem letzten Update hält .
Jetzt muss ich die Zeilen finden, die:
- UpdateAt mehr als 1 Jahr ab jetzt vor ist
- Muss aktualisiert Preis mindestens einmal seit
- Sind nicht die meisten up- Preis to-date
Also mit diesen Bedingungen sollte das Ergebnis aus der obigen Tabelle sein:
Items | Price | UpdateAt
2 | 4000 | 06/04/2015
4 | 1800 | 07/05/2015
kann ich erreichen, was ich mit diesen
Declare @LastUpdate date set @LastUpdate = DATEADD(YEAER, -1, GETDATE())
select Items, UpdateAt from ITEM_PRICE where Items in (
select Items from (
select Items, count(Items) as C from ITEM_PRICE group by Items) T
where T.C > 1)
and UpdateAt < @LastUpdate
brauche Aber da ich noch einen Neuling in Sqlserver ist, und dieses Bedürfnis in vb.net getan werden, entlang dieser Abfrage mit vieler Auswahl in Leiten scheint schlampig und schwer zu halten.
Also möchte ich fragen, ob mir jemand eine einfachere Lösung geben kann?
Entschuldigung, ich habe meine Frage bearbeitet, da ich nach dem Versuch von @Tim Biegeleisens Antwort noch eine weitere Bedingung erfüllen muss, die in der Tat die richtige für die Frage vor der Bearbeitung ist. Und ich kann das nicht mehr herausfinden.
Warum brauche ich alle diese Bedingung, es ist, weil ich die Tabelle aufräumen muss: Löschen der Daten, die älter als 1 Jahr ist, während immer noch die aktuellsten Artikel Preis.
Artikel 2 wird nur einmal aktualisiert, wie es Ihr erwartetes Ergebnis ist ? – TheGameiswar
Punkt 3 wurde im letzten Jahr nie aktualisiert, zumindest nicht in den Beispieldaten, die Sie uns gezeigt haben. –
@TheGameiswar Artikel 2 wird einmal am 06.04.2015 aktualisiert, also mehr als 1 Jahr, und am 01.01.2016 aktualisiert, so dass die Zeile mit dem 04.06.2015 im Ergebnis erscheinen sollte. – HaPhan