2016-05-09 13 views
-1

Ich habe eine Tabelle mit dem Namen Kunden in der Datenbank, die von typeid (zB: typeid = 1 Kunden und typeid = 2 Verteiler) getrennt Einzelhändler (Kunden) und Händler hatkonvertieren Zeilen in Spalten ohne PIVOT mit oder Verrohrte Aggregatfunktionen

Jetzt gibt es Mapping-Tabelle, in denen es Mappings von Kunden und Distributoren gibt. Beachten Sie, dass ein Händler oder Kunde höchstens zwei Händler haben wird.

Unten ist die Mapping-Tabelle.

| Customer | Distributor | 
    ---------------------------- 
    | Customer1 | Distributor1 | 
    | Customer1 | Distributor2 | 
    | Customer2 | Distributor1 | 
    | Customer2 | Distributor3 | 
    | Customer3 | Distributor2 | 

Ich möchte diese Tabelle wie folgt darstellen

| Customer | Partner1  | Partner 2  | 
--------------------------------------------------- 
| Customer1 | Distributor1 | Distributor2 | 
| Customer2 | Distributor1 | Distributor3 | 
| Customer3 | Distributor2 | Null   | 

das Konzept der Pivot mich geschlagen, aber es gibt keine Spalte Aggregatfunktion auf auszuführen, für Dreh angewendet werden.

Alle einfachen Möglichkeiten, um das gewünschte Ergebnis zu erzielen?

PS: Ich habe bereits daran gedacht, zwei verschiedene Sätze aus zwei temporären Tabellen zu bekommen und dann mit ihnen zu verbinden, aber das sieht langweilig aus.Helfen Sie mir, wenn jemand mich mit einer einfacheren Lösung auf das Ergebnis hinweisen könnte.

+2

Sind Sie MySQL- oder SQL-Server verwenden? Sie sind nicht dasselbe. –

+0

Ich entfernte die überflüssigen Datenbank-Tags. Bitte markieren Sie die Frage mit der Datenbank, die Sie tatsächlich verwenden. –

+0

@JohnConde Ich benutze SQL-Server 2012 –

Antwort

2

Sie können die Spalte Notwendigkeit zum Schwenken erzeugen durch row_number() mit:

select customer, 
     max(case when seqnum = 1 then distributor end) as distributor1, 
     max(case when seqnum = 2 then distributor end) as distributor2 
from (select t.*, 
      row_number() over (partition by customer order by (select null)) as seqnum 
     from t 
    ) t 
group by customer; 
+0

Das hat für mich funktioniert, obwohl ich nicht verstanden habe, was es bedeutet. Wäre es toll, wenn Sie erklären könnten, was genau in Ihrer Anfrage passiert? Wofür wird Partition verwendet? –

+0

https://msdn.microsoft.com/en-us/library/ms186734.aspx –

Verwandte Themen