2016-06-03 7 views
1

benötigt Ich habe zwei Tabellen.Zusammenführen, wenn jede Zeile in Tabelle A mehrere Zeilen aus Tabelle B in SQL Server

InstructorRelated

TermCode |Term_Seq_ID |Subject|Course|QuestionNbr|InstructorName |Instructor_Pid|Mean |StdDev 
FS15  |1154  |ACC |201 |5   |SKYWALKER, LUKE|BR549   |4.349|1.033 
FS15  |1154  |ACC |201 |5   |AMIDALA, PADME |39AHW   |4.285|1.030 

ClassRelated:

TermCode |Term_Seq_ID |Subject|Course|QuestionNbr|InstructorName |Instructor_Pid|Mean |StdDev 
FS15  |1154  |ACC |201 |6   |NULL   |ALL   |4.078|1.049 
FS15  |1154  |ACC |201 |9   |NULL   |ALL   |3.806|1.128 

Was der Kunde will, ist für diese beiden Tabellen so zusammengefasst werden, dass jeder ACC 201 Ausbilder eine Zeile für Fragen 5, 6 und 9 , so:

TermCode |Term_Seq_ID |Subject|Course|QuestionNbr|InstructorName |Instructor_Pid|Mean |StdDev 
FS15  |1154  |ACC |201 |5   |SKYWALKER, LUKE|BR549   |4.342|1.033 
FS15  |1154  |ACC |201 |6   |NULL   |ALL   |4.078|1.049 
FS15  |1154  |ACC |201 |9   |NULL   |ALL   |3.806|1.128 
FS15  |1154  |ACC |201 |5   |AMIDALA, PADME |39AHW   |4.285|1.030 
FS15  |1154  |ACC |201 |6   |NULL   |ALL   |4.078|1.049 
FS15  |1154  |ACC |201 |9   |NULL   |ALL   |3.806|1.128 

Kann dies getan werden?

Antwort

1
select * from 
(select * from InstructorRelated 
Union all 
select * from ClassRelated 
Union all 
select * from InstructorRelated) x 

... Nicht sicher, warum wollen Sie die Informationen von zweimal dort classrelated ... wenn Sie schauen, die NULL-Werte und All mit den Lehrer-Namen zu ersetzen, dann:

select * from (
    select TermCode , 
    Term_Seq_ID , 
    Subject, 
    Course, 
    QuestionNbr, 
    InstructorName , 
    Instructor_Pid, 
    Mean , 
    StdDev 
    from InstructorRelated 
Union 
    select CR.TermCode , 
    CR.Term_Seq_ID , 
    CR.Subject, 
    CR.Course, 
    CR.QuestionNbr, 
    IR.InstructorName , 
    IR.Instructor_Pid, 
    CR.Mean , 
    CR.StdDev 
from InstructorRelated IR 
    join ClassRelated CR 
    on IR.subject = CR.subject and IR.Course=CR.Course) x 
+0

Der Kunde wollte es so für einen Bericht. Ich werde deine Lösung ausprobieren. –

+0

Zu viele Duplikate. –

+0

versuchen Sie es jetzt, änderte ich die Union alle zu einer Union, die es gruppieren sollte – Matt

Verwandte Themen