2016-06-27 2 views
0

Ich habe 2 SQL-Tabellen mit einem Fremdschlüssel-Constraints abgebildetSQL-Anweisung für die Kombination von zwei Datentabellen ohne beitreten linken

Table A 

Field1 
Field2 
.... 

und zweite

Table B 

Year 
Value 
TableAId (foreign key) 

Wie kann ich eine Ausgabe wie folgt statt bekommen in jeder Reihe von Tabellen 2 und Verbindungsfelder Tabelle A immer wiederholt

Result 

Field1 
Field2 
... 
TableBValue1 (first value field from table B) 
TableBValue2 
... 

Einige Beispieldaten

Tabelle A

ID - Field 1 - Field 2 - ... 

1 - "Banana" - "Cold" - ... 
2 - "Apple" - "Hot" - ... 

Tabelle B

ID - Year - Value - TableAId 

1 - 2016 - 1.5 - 1 
2 - 2017 - 3.2 - 1 
3 - 2018 - 1.6 - 1 
4 - 2016 - 1.8 - 2 
5 - 2017 - 2.2 - 2 
6 - 2018 - 2.6 - 2 

Erwartetes Ergebnis

ID - Field 1 - Field 2 - ... - 2016Value - 2017Value - 2018Value 

1 - "Banana" - "Cold" - ... - 1.5 - 3.2 - 1.6 
2 - "Apple" - "Hot" - ... - 1.8 - 2.2 - 2.6 
+2

Fügen Sie einige Beispieltabellendaten und das erwartete Ergebnis hinzu. – jarlh

+0

Es heißt Aggregation. Gruppiere nach den Spalten, die du eindeutig sein willst, und benutze Aggregatfunktionen auf den anderen wie 'min()' –

+0

Was hast du bisher gemacht und wo bist du stecken geblieben? – Lucky

Antwort

0

hoffe, das hilft,

CREATE TABLE #TableA (ID INT, F1 VARCHAR(50), F2 VARCHAR(50)) 
CREATE TABLE #TableB (ID INT, TableAId INT, YEAR INT, Value float) 
INSERT INTO #TableA 
SELECT 1, 
     'Banana', 
     'Cold' 
UNION 
SELECT 2, 
     'Apple', 
     'Hot' 
INSERT INTO #TableB (ID, YEAR, Value, TableAId) 
SELECT 1, 2016, 1.5, 1 
UNION 
SELECT 2, 2017, 3.2, 1 
UNION 
SELECT 3, 2018, 1.6, 1 
UNION 
SELECT 4, 2016, 1.8, 2 
UNION 
SELECT 5, 2017, 2.2, 2 
UNION 
SELECT 6, 2018, 2.6, 2 
SELECT * 
FROM #TableA 
SELECT * 
FROM #TableB GO WITH CTEResult AS 
    (SELECT TableAID, 
      A.F1, 
      A.F2, 
      B.YEAR, 
      B.Value 
    FROM #TableA A 
    INNER JOIN #TableB B ON A.ID = B.TableAId) 
SELECT * 
FROM CTEResult PIVOT (Max(Value) 
         FOR YEAR IN ([2016],[2017],[2018])) Res 
Verwandte Themen