2017-09-26 1 views
0

ich eine Abfrage, wo ich Daten übernehmen, so dass ich es in OLEDB-Verbindung gespeichert, weil ich, dass Daten mehrmals in eine andere querysVerwendung der gespeicherten Daten in Abfrage SSIS

Abfrage

SELECT * FROM (
SELECT 
TT.VOUCHER, 
TT.TAXITEMGROUP, 
TT.TAXCODE, 
TT.SOURCEBASEAMOUNTCUR, 
TT.SOURCETAXAMOUNTCUR, 
TTGJAERIVA.TAXTRANSRELATIONSHIP, 
TTGJAERIVA.GENERALJOURNALACCOUNTENTRY, 
TTGJAERIVA.LEDGERDIMENSION, 
GJAERIVA.TEXT, 
GJAERIVA.LEDGERDIMENSION AS LEDGERDIMENSIONGAE, 
GJAERIVA.POSTINGTYPE 
FROM TAXTRANS TT 
INNER MERGE JOIN TAXTRANSGENERALJOURNALACCOUNTENTRY TTGJAERIVA ON TTGJAERIVA.TAXTRANS = TT.RECID 
INNER MERGE JOIN GENERALJOURNALACCOUNTENTRY GJAERIVA ON TTGJAERIVA.GENERALJOURNALACCOUNTENTRY = GJAERIVA.RECID 
AND GJAERIVA.POSTINGTYPE IN(14,236,71,41) 
AND TT.TRANSDATE <= '2015-04-30' 
WHERE 
(TT.TAXORIGIN <> 11 AND TT.TRANSDATE BETWEEN '2015-01-01' AND '2015-04-30') OR (TT.TAXORIGIN = 11 AND TT.TRANSDATE BETWEEN '2015-01-01' AND '2015-04-30')) AS T 
verwenden möchten

Dann erstelle ich eine andere OLEDB-Verbindung, wo ich eine andere Abfrage, wo ich Daten aus der ersten Abfrage verwenden

zweite Abfrage (relevante Code nur)

LEFT MERGE JOIN 
(SELECT TTRIVA.*,TTGJAERIVA.GENERALJOURNALACCOUNTENTRY FROM TAXTRANS TTRIVA 
INNER MERGE JOIN TAXTRANSGENERALJOURNALACCOUNTENTRY TTGJAERIVA ON TTGJAERIVA.TAXTRANS = TTRIVA.RECID 
INNER MERGE JOIN GENERALJOURNALACCOUNTENTRY GJAERIVA ON TTGJAERIVA.GENERALJOURNALACCOUNTENTRY = GJAERIVA.RECID 
AND GJAERIVA.POSTINGTYPE IN(14,236,71) AND TTRIVA.TRANSDATE <[email protected]) TTRIVA ON TT.VOUCHER = TTRIVA.VOUCHER 
AND TT.SOURCERECID = TTRIVA.SOURCERECID 
AND TT.TAXITEMGROUP = TTRIVA.TAXITEMGROUP 
AND (TTRIVA.TAXCODE LIKE 'RIVA%') 
AND TTRIVA.GENERALJOURNALACCOUNTENTRY = TTGJAE.GENERALJOURNALACCOUNTENTRY 


--JOIN PARA RETENCIONES DE ISR PAGADAS 
LEFT MERGE JOIN 
(SELECT TTRISR.*,TTGJAERIVA.GENERALJOURNALACCOUNTENTRY FROM TAXTRANS TTRISR 
INNER MERGE JOIN TAXTRANSGENERALJOURNALACCOUNTENTRY TTGJAERIVA ON TTGJAERIVA.TAXTRANS = TTRISR.RECID 
INNER MERGE JOIN GENERALJOURNALACCOUNTENTRY GJAERIVA ON TTGJAERIVA.GENERALJOURNALACCOUNTENTRY = GJAERIVA.RECID 
AND GJAERIVA.POSTINGTYPE IN(14,236,71) AND TTRISR.TRANSDATE <[email protected]) TTRISR ON TT.VOUCHER = TTRISR.VOUCHER AND TT.SOURCERECID = TTRISR.SOURCERECID 
AND TT.TAXITEMGROUP = TTRISR.TAXITEMGROUP 
AND (TTRISR.TAXCODE LIKE 'RISR%') 
AND TTRISR.GENERALJOURNALACCOUNTENTRY = TTGJAE.GENERALJOURNALACCOUNTENTRY 

--JOIN PARA IEPSCUOTA 
LEFT MERGE JOIN 
(SELECT TTIEPSCUOTA.*,TTGJAERIVA.GENERALJOURNALACCOUNTENTRY FROM TAXTRANS TTIEPSCUOTA 
INNER MERGE JOIN TAXTRANSGENERALJOURNALACCOUNTENTRY TTGJAERIVA ON TTGJAERIVA.TAXTRANS = TTIEPSCUOTA.RECID 
INNER MERGE JOIN GENERALJOURNALACCOUNTENTRY GJAERIVA ON TTGJAERIVA.GENERALJOURNALACCOUNTENTRY = GJAERIVA.RECID 
AND GJAERIVA.POSTINGTYPE IN(14,236,71) AND TTIEPSCUOTA.TRANSDATE <[email protected]) TTIEPSCUOTA ON TT.VOUCHER = TTIEPSCUOTA.VOUCHER AND TT.SOURCERECID = TTIEPSCUOTA.SOURCERECID 
AND TT.TAXITEMGROUP = TTIEPSCUOTA.TAXITEMGROUP 
AND (TTIEPSCUOTA.TAXCODE LIKE 'IEPSCUOTAP') 
AND TTIEPSCUOTA.GENERALJOURNALACCOUNTENTRY = TTGJAE.GENERALJOURNALACCOUNTENTRY 

Wie Sie ich in jedem LEFT JOIN verwenden FROM TAXTRANS sehen können, aber ich habe das TAXTRANS in ersten Abfrage gespeichert. Wie kann ich diese zweite Abfrage durch erste Abfragedaten ersetzen?

Datenfluß:

enter image description here

Antwort

0

Was ist die Notwendigkeit, die Abfrage zum Aufteilen und Zusammenführen es, wenn es in einem einzigen Satz kann getan werden? Wenn Sie die Abfragen lieber auf separater Batch-Basis haben möchten, sollten Sie zunächst die Abfrage, die Sie wiederverwenden möchten, in eine temporäre Tabelle (# -Tabellen) einfügen. Verwenden Sie diese temporäre Tabelle, um Ihre anderen Abfragen zu verknüpfen. Haben Sie alles in einer gespeicherten Prozedur gekapselt und dann erhalten Sie die Daten. Um die Leistung weiter zu verbessern, überprüfen Sie, ob Sie Indizes integrieren können.

Merge Join mit Sortieren ist eine sehr teure Transformation und es isst in Leistung. Zusätzlich, was Sie suchen, ist T-SQL-Verbesserung und SSIS-Transformationen sind kein Ersatz für das

+0

Ich mache es, weil zweite Abfrage nicht die einzige ist, die ich habe, sollte ich eine andere Querys wie 10 tun, und alle Abfragen verwendet TAXTRANS info – Ledwing

+0

Wenn alle anderen 10 Abfragen, die Sie ausführen müssen, sich in derselben Datenbank befinden, gilt das, was ich oben aufgeführt habe, immer noch. Modularisieren Sie Ihre Abfragen Schritt für Schritt und lassen Sie sie als Stapel von Anweisungen in der Datenbank ausführen. Die Logik von Joins über Merge in SSIS zu bringen, wird nicht helfen. – VKarthik

+0

Trennen Sie Ihre Abfragen in wiederverwendbare Abschnitte und weisen Sie sie Variablen zu. Erstellen Sie jede Anweisung innerhalb einer Ausdrucksaufgabe, bevor Sie die SQL-Aufgabe ausführen. –

Verwandte Themen