2016-07-14 12 views
-2

in einer einzigen Datenbank verketten 3 Tabellen, ich habe drei Tabellen wie folgt:Wie MSSQL Server

enter image description here

Ich mag, dass sie in irgendeiner einzigen Tabelle verketten, jede Anregung?

+0

Was meinst du mit * verketten *? Sie können zwei Strings verketten - aber nicht mehrere Tabellen .... definieren Sie, was Sie als Ausgabe davon erwarten! –

+0

Möchten Sie eine Tabelle mit allen Werten erstellen? Möchten Sie die verschiedenen Proposalids abgleichen und ein Dataset mit allen verfügbaren Werten für jedes von ihnen zurückgeben? Wir werden Sie brauchen, um mit Ihrer Frage ausführlicher zu sein. Versuchen Sie, uns eine erwartete Ausgabe zu geben. –

+0

Ich möchte sie nur in einer Tabelle zusammenfassen, ohne die Übereinstimmung der Angebots-ID zu berücksichtigen. In der finalen Tabelle können wir propostid_1, propostid_2, propostid_2 verwenden. und wo keine der Zeilen nicht gleich sind, können wir NULL verwenden. – Tariq

Antwort

0

Danke für Ihre Hilfe das Problem gelöst ist.

SELECT mtlreq.proposalid, mtlreq.prp_mtlreq_taskgrp,mtlreq.prp_mtlreq_taskcode,mtlreq.prp_mtlreq_itemcode,mtlreq.prp_mtlreq_rateper,mtlreq.prp_mtlreq_qty,mtlreq.prp_mtlreq_Inter_MaterCost,mtlreq.prp_mtlreq_UOM,mtlreq.item_short_desc, resreq.proposalid,resreq.prp_resreq_taskcode ,resreq.prp_resreq_resource,resreq.prp_resreq_usage,resreq.prp_resreq_uom,resreq.prp_resreq_rate,resreq.prp_resreq_overhd_pers 
FROM (
    SELECT proposalid,prp_mtlreq_taskgrp,prp_mtlreq_taskcode,prp_mtlreq_itemcode,prp_mtlreq_rateper,prp_mtlreq_qty,prp_mtlreq_Inter_MaterCost,prp_mtlreq_UOM,item_short_desc, 
      ROW_NUMBER() OVER (ORDER BY proposalid) AS rn 
    FROM prjdet_prp_taskwork_mtlreq ) AS mtlreq 
FULL OUTER JOIN (
    SELECT proposalid,prp_resreq_taskcode ,prp_resreq_resource,prp_resreq_usage,prp_resreq_uom,prp_resreq_rate,prp_resreq_overhd_pers, 
      ROW_NUMBER() OVER (ORDER BY proposalid) AS rn 
    FROM prjdet_prp_taskwork_resreq) AS resreq 
ON mtlreq.rn = resreq.rn 
FULL OUTER JOIN (
SELECT proposalid,mtprp_delv_lineno,mtprp_delv_itemcode,mtprp_delv_cost,mtprp_delv_linelevelmrg,mtprp_delv_proposedamt, 
      ROW_NUMBER() OVER (ORDER BY proposalid) AS rn 
    FROM prjproposal_delidtl) AS delidtl 
    on mtlreq.rn = delidtl.rn and resreq.rn=delidtl.rn 
0

Wenn ich Verständnis habe richtig deine Antwort, die Sie so etwas wie dies wollen:

CREATE TABLE COMBINED (/*Insert the set of fields here*/); 
GO 

INSERT INTO COMBINED 
    SELECT Table1.ProposalId 
     , /*all other Table1 fields*/ 
     , Table2.ProposalId 
     /*all other Table2 fields*/ 
     , Table3.ProposalId 
     , /*all other Table2 fields*/ 
    FROM Table1 
    FULL JOIN Table2 
     ON Table1.ProposalId = Table2.ProposalId 
    FULL JOIN Table3 
     ON Table1.ProposalId = Table3.ProposalId; 

Dadurch werden die Zeilen mit dem gleichen Vorschlag ID übereinstimmen (aber halten die alle ihre Werte als proposalid_1, proposalid_2 ... und für diejenigen, die bringen die volle Reihe und NULL für alle anderen Felder der Rest der Tabellen nicht übereinstimmen werden.

+0

Hallo Abfrage kombiniert, aber wiederholte Werte kommen – Tariq