2 Ähnliche MS SQL Server 2000 Abfrage aus 2 Datenbank miteinander ausgeben.
Ich habe 2 funktionieren Datenbank-Abfragen geschrieben. Beide bringen die selben Spalten als Ergebnis, jedoch frägt die erste Abfrage die aktuelle Datenbank ab, die zweite Abfrage das Archiv.
Wie kann ich die Ausgabe der beiden Datenbanken kombinieren?
1. Abfrage:
Die Deklaration der Datenbank X habe ich schon vorgenommen, da ich der Meinung war, das ich das ganze so kombinieren könnte. Kann man natürlich auch weglassen.
Die 2. Abfrage ist ziemlich ähnlich und gibt auch die passende Tabelle aus. Auch die Deklaration der Y Datenbank ist natürlich nicht unbedingt nötig.
Mag mir hier wer bitte auf die Sprünge helfen? Danke!
Andreas
Wie kann ich die Ausgabe der beiden Datenbanken kombinieren?
1. Abfrage:
Die Deklaration der Datenbank X habe ich schon vorgenommen, da ich der Meinung war, das ich das ganze so kombinieren könnte. Kann man natürlich auch weglassen.
DECLARE @ANZAHL_TAGE INTEGER
DECLARE @DATE DATETIME
SET @ANZAHL_TAGE=2
SET @DATE=(GETDATE()-@ANZAHL_TAGE)
SELECT X.MELDUNGSART, X.START_DATUM, X.NUMMER, X.AU_POS, X.BARCODE, X.POS, X.ARTNR, X.BEZ_1, X.KAPA, X.SB, X.PLAN_MENGE, X.PLANLZ_P_STK, X.PLANRZ, X.PLANBZ_P_STCK, X.IST_MENGE, X.GUT_MENGE, X.AUSSCHUSS, X.SOLL_LZ, X.SOLL_BZ FROM
(
SELECT A.MELDUNGSART, A.START_DATUM, B.NUMMER, D.AUFTRAG_POSITION AS AU_POS, A.BARCODE, A.POS, B.ARTNR, C.BEZ_1, D.ARTNR AS KAPA, A.SB, D.PLAN_MENGE, D.PLAN_LZ_SEK/D.PLAN_MENGE/60 AS PLANLZ_P_STK, D.PLAN_RZ_SEK/60 AS PLANRZ, REPLACE(D.HM1_TEXT,',','.') AS PLANBZ_P_STCK, D.IST_MENGE, A.GUT_MENGE, A.AUSSCHUSS,
CASE WHEN A.MELDUNGSART = 'R'
THEN D.PLAN_RZ_SEK/60
ELSE D.PLAN_LZ_SEK/D.PLAN_MENGE/60*A.GUT_MENGE
END
AS SOLL_LZ,
CASE WHEN A.MELDUNGSART = 'R'
THEN D.PLAN_RZ_SEK/60
ELSE (CAST(REPLACE(D.HM1_TEXT,',','.') AS FLOAT))*A.GUT_MENGE
END
AS SOLL_BZ
FROM M01.dbo.DV_ZEITEN A
INNER JOIN M01.dbo.DV_FE_KOPF B ON A.BARCODE = B.BARCODE
INNER JOIN M01.dbo.ARTIKEL_STAMM C ON B.ARTNR = C.ARTNR
INNER JOIN M01.dbo.DV_FE_POSTEN D ON A.BARCODE = D.BARCODE AND A.POS = D.POS
WHERE A.START_DATUM > @DATE AND A.SB < '900' AND D.ART NOT IN ('L','E') AND A.SB IN ('801','802','803')
) AS X
ORDER BY X.START_DATUM
Die 2. Abfrage ist ziemlich ähnlich und gibt auch die passende Tabelle aus. Auch die Deklaration der Y Datenbank ist natürlich nicht unbedingt nötig.
DECLARE @ANZAHL_TAGE INTEGER
DECLARE @DATE DATETIME
SET @ANZAHL_TAGE=100
SET @DATE=(GETDATE()-@ANZAHL_TAGE)
SELECT Y.MELDUNGSART, Y.START_DATUM, Y.NUMMER, Y.AU_POS, Y.BARCODE, Y.POS, Y.ARTNR, Y.BEZ_1, Y.KAPA, Y.SB, Y.PLAN_MENGE, Y.PLANLZ_P_STK, Y.PLANRZ, Y.PLANBZ_P_STCK, Y.IST_MENGE, Y.GUT_MENGE, Y.AUSSCHUSS, Y.SOLL_LZ, Y.SOLL_BZ FROM
(
SELECT E.MELDUNGSART, E.START_DATUM, F.NUMMER, F.AUFTRAG_POSITION AS AU_POS, E.BARCODE, E.POS, F.ARTNR, G.BEZ_1, H.ARTNR AS KAPA, E.SB, H.PLAN_MENGE, H.PLAN_LZ_SEK/H.PLAN_MENGE/60 AS PLANLZ_P_STK, H.PLAN_RZ_SEK/60 AS PLANRZ, REPLACE(H.HM1_TEXT,',','.') AS PLANBZ_P_STCK, H.IST_MENGE, E.GUT_MENGE, E.AUSSCHUSS,
CASE WHEN E.MELDUNGSART = 'R'
THEN H.PLAN_RZ_SEK/60
ELSE H.PLAN_LZ_SEK/H.PLAN_MENGE/60*E.GUT_MENGE
END
AS SOLL_LZ,
CASE WHEN E.MELDUNGSART = 'R'
THEN H.PLAN_RZ_SEK/60
ELSE (CAST(REPLACE(H.HM1_TEXT,',','.') AS FLOAT))*E.GUT_MENGE
END
AS SOLL_BZ
FROM A01.dbo.DV_ARCHIV_2009_ZEITEN E
INNER JOIN A01.dbo.DV_ARCHIV_2009_KOPF F ON E.BARCODE = F.BARCODE
INNER JOIN M01.dbo.ARTIKEL_STAMM G ON F.ARTNR = G.ARTNR
INNER JOIN A01.dbo.DV_ARCHIV_2009_POSTEN H ON E.ARCHIV_NUMMER = H.ARCHIV_NUMMER AND E.POS = H.POS
WHERE E.START_DATUM > @DATE AND E.SB < '900' AND H.ART NOT IN ('L','E') AND E.SB IN ('801','802','803')
) AS Y
ORDER BY Y.START_DATUM
Mag mir hier wer bitte auf die Sprünge helfen? Danke!
Andreas
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 125014
Url: https://administrator.de/contentid/125014
Ausgedruckt am: 20.11.2024 um 02:11 Uhr
2 Kommentare
Neuester Kommentar