anbei1
Goto Top

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.

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

Content-ID: 125014

Url: https://administrator.de/contentid/125014

Ausgedruckt am: 20.11.2024 um 02:11 Uhr

Berrnd
Berrnd 15.09.2009 um 17:49:25 Uhr
Goto Top
Hi,

mit UNION...

Gruß
Bernd
anbei1
anbei1 15.09.2009 um 17:54:44 Uhr
Goto Top
Merci. Da hätte ich auch drauf kommen können.