2017-07-27 3 views
-1

Ich habe in den folgenden TabellenSQL - Finden Eindeutige Werte innerhalb gruppiert Ergebnisse

**Order** 
- Id (int) 
- OrderDate (datetime) 
- OrderNumber (nvarchar) 
- CustomerId (int) 
- TotalAmount (decimal) 

 

**OrderItem** 
- Id (int) 
- OrderId (int) 
- ProductId (int) 
- UnitPrice (decimal) 
- Quantity (int) 

 

**Product** 
- Id (int) 
- ProductName (nvarchar) 
- SupplierId (int) 
- UnitPrice (decimal) 
- Package (nvarchar) 
- IsDiscontinued (bit) 

 

**Supplier** 
- Id (int) 
- CompanyName (nvarchar) 
- ContactName (nvarchar) 
- ContactTitle (nvarchar) 
- City (nvarchar) 
- Country (nvarchar) 
- Phone (nvarchar) 
- Fax (nvarchar) 

Ich muss alle Bestellungen herausfinden, die Produkte enthält, die aus einem einzelnen Land geliefert werden. Jede Hilfe wird geschätzt.

+0

können Sie bitte eine sqlfiddle –

+1

Bitte ** [EDIT] ** Ihre Frage stellen und einige Beispieldaten und die erwartete Ausgabe addieren auf der Grundlage dieser Daten. [** Formatierter Text **] (http://stackoverflow.com/help/formatting) bitte, [** keine Screenshots **] (http://meta.stackoverflow.com/questions/285551/why-may -I-nicht-Upload-Bilder-of-Code-auf-so-wenn-eine Frage zu stellen/285557 # 285557). ** [Bearbeiten] ** Ihre Frage - tun ** nicht ** Postleitzahl oder zusätzliche Informationen in Kommentaren. –

+1

Welche [DBMS] (https://en.wikipedia.org/wiki/DBMS) verwenden Sie? Postgres? Orakel? –

Antwort

0

Bitte versuchen diese kann es helfen

select * from (
     select * from (
      select ROW_NUMBER() over(partition by s.Country order by s.Country) RowNo,o.* from [order] as o 
      inner join OrderItem as oi on o.Id = oi.OrderId 
      inner join Product as p on ProductId = p.Id 
      inner join Supplier as s on p.SupplierId = s.Id 
     ) as t 
     where RowNo > 1 
    ) as t 
    right join [order] as o on t.Id = o.Id 
    where t.Id is null 
Verwandte Themen