2017-07-03 3 views
3

Ich habe eine Reihe von Datensätzen sortiert (Order BY) ProductDesc, RecDate, dann ProductBrand und es gibt mir das folgende Ergebnis.SQL Wählen Sie Anweisung Problem in der Reihenfolge von

- >> SQL Ist

SELECT RecDate, ProductDesc,ProductBrand 
FROM MyTable i 
Order BY i.ProductDesc, i.RecDate,i. ProductBrand 

-

RecDate  ---  ProductDesc    ---  Brand 
-------------------------------------------------------------- 
2017-07-15  ---  TOMATO ROMA    ---  (S & S) 
2017-07-16  ---  TOMATO ROMA    ---  (A & B) 
2017-07-17  ---  TOMATO ROMA    ---  (C & D) 
2017-07-18  ---  TOMATO ROMA    ---  (AAA) 
2017-07-25  ---  TOMATO ROMA    ---  (C & D) 
2017-07-26  ---  TOMATO ROMA    ---  (C & D) 

aber meine Forderung ist es, diese Aufzeichnungen von ProductDesc, RecDate in ASC und dann gibt es die mit dem gleichen Produkt, wenn sortiert anzuzeigen die gleiche Marke (Wie 'TOMATE ROMA (C & D)'), aber hat unterschiedliche Empfangsdaten, es muss diese zusammen gruppieren. Die sortierten Daten sollten wie folgt aussehen:

RecDate  ---  ProductDesc    ---  Brand 
---------------------------------------------------------------- 
2017-07-15  ---  TOMATE ROMA    ---  (S & S) 
2017-07-16  ---  TOMATE ROMA    ---  (A & B) 
2017-07-17  ---  TOMATE ROMA    ---  (C & D) 
2017-07-25  ---  TOMATE ROMA    ---  (C & D) 
2017-07-26  ---  TOMATE ROMA    ---  (C & D) 
2017-07-18  ---  TOMATE ROMA    ---  (AAA) 

Irgendwelche Vorschläge, wie ich das schaffen kann? Hinweis: ich benutze SQL SERVER, und Ausführen von SQL Füllen Sie die DataTable, und füllen Sie eine Datagridview mit dieser Datentabelle.

Antwort

5

Sie möchten nach dem Minimum des Datums für die Marke sortieren. Sie können Fensterfunktionen in der order by-Klausel verwenden, dies zu tun:

select RecDate, ProductDesc, ProductBrand 
from MyTable i 
order by i.ProductDesc, 
     min(i.RecDate) over (partition by i.ProductBrand), 
     i.ProductBrand, 
     i.RecDate; 
+0

Diese Lösung funktioniert gut .. Danke Können Sie bitte vorschlagen, wie ich das mit Linq getan gleichen bekommen kann? – Ronjon

+0

Ist es möglich, dies mit Linq oder einer Datentabelle zu tun? – Ronjon