list Top Items * und * Ob gekauft (eine SQL-Abfrage)

Hier sind die Schlüsselfelder, mit denen ich arbeite: (Sie kommen aus einer Verknüpfung auf zwei anderen Tischen und es gibt auch einige zusätzliche Felder wie das date, an dem ich filme, aber das Zeug, das ich behandeln kann.)

Kundennummer (Text), Artikelnummer (Nummer), Verkauf $ s (Nummer), Kundennummer (Nummer)

Ich möchte zwei Fragen mit einer Frage beantworten, wenn möglich:

1) Für eine gegebene list der Kundentypen, was waren die Top 25 Artikel (Summe aus Verkäufen)

2) Mit der list der 25 Elemente, die in Schritt 1 generiert wurden, hat eine bestimmte list von Kunden-IDs jedes der angegebenen Elemente gekauft?

Also mein letztes Ergebnis würde so etwas aussehen:

(header) Item # | Customer Purchased? (row 01) Item 1123 | Yes (row 02) Item 2452 | Yes (row 03) Item 3354 | No ... (row 25) Item 2554 | No 

Die Positionsnummern würden in absteigender Verkaufsmenge (innerhalb der angegebenen Kundenkategorie / Kategorien) aufgeführt sein, und ich würde prüfen, ob Summe der Verkäufe> 0, um die Ja / Nein-Flagge auf Kunden zu kaufen, die gekauft wurde.

Vielen Dank!

Angenommen, Sie haben Ihre Spalten in einer Tabelle #Orders und die "list der Kunden-IDs" in einer Tabelle #CustomerIds:

 create table #Orders (CustomerId int, CustomerType varchar(10), ItemId int, Sales decimal); create table #MyCustomers (CustomerId int); 

… man könnte so etwas ausprobieren:

 declare @CustomerType varchar(10) = 'Ugly'; with MarkedOrders as ( select o.ItemId, o.Sales, case when mc.CustomerId is not null then 1 else 0 end IsMyCustomer from Orders o left join #MyCustomers mc on mc.CustomerId = o.CustomerId where o.CustomerType = @CustomerType ) select top 25 o.ItemId, max(IsMyCustomer) IsPurchasedByMyCustomer from MarkedOrders o group by o.ItemId order by sum(o.Sales) desc