cancel
Showing results for 
Search instead for 
Did you mean: 

Consolidar compañias

Former Member
0 Kudos

Estimados,

Alguno tiene conocimiento si ya existe algun informe o procedimiento donde se pueda consolidar informacion de varias BD ò compañias ?

Ej. donde se pueda obtener digamos las ventas de las BD A,B,C en cantidades, valor, en un rango de fechas determinado ? partiendo del echo que los codigos de los articulos son los mismos en las 3 BD, manejan igual parametrizacion.

Agradezco los comentarios.

Accepted Solutions (0)

Answers (3)

Answers (3)

felipe_loyolarodriguez
Active Contributor
0 Kudos

Se me ocurre crear un procedimiento almacenado, luego lo ejecutas desde alguna de las sociedades o si quieres lo guardas en las 3

Un ejemplo


CREATE PROCEDURE [dbo].[SBO_Ventas_Consolidadas] (@INI DATETIME, @FIN DATETIME) AS
BEGIN

DECLARE @MAESTRO_ITEMS TABLE (ItemCode CHAR(20), ItemName VARCHAR(100))
INSERT INTO @MAESTRO_ITEMS

SELECT DISTINCT T0.ItemCode, T0.ItemName
FROM [BASE_A].[dbo].[OITM] T0
UNION ALL
SELECT DISTINCT T0.ItemCode, T0.ItemName
FROM [BASE_B].[dbo].[OITM] T0
UNION ALL
SELECT DISTINCT T0.ItemCode, T0.ItemName
FROM [BASE_C].[dbo].[OITM] T0

SELECT DISTINCT A.ItemCode'Codigo Item', A.ItemName'Nombre Item',
ISNULL((SELECT SUM(X.Quantity) FROM [BASE_A].[dbo].[OINV] W INNER JOIN [BASE_A].[dbo].[INV1] X ON X.DocEntry=W.DocEntry WHERE W.DocDate BETWEEN @INI AND @FIN AND X.ItemCode=A.ItemCode),0)-ISNULL((SELECT SUM(Z.Quantity) FROM [BASE_A].[dbo].[OINV] Y INNER JOIN [BASE_A].[dbo].[INV1] Z ON Z.DocEntry=Y.DocEntry WHERE Y.DocDate BETWEEN @INI AND @FIN AND Z.ItemCode=A.ItemCode),0)'Cantidad Base A',
ISNULL((SELECT SUM(Y.Quantity*Y.Price) FROM [BASE_A].[dbo].[OINV] W INNER JOIN [BASE_A].[dbo].[INV1] X ON X.DocEntry=W.DocEntry WHERE W.DocDate BETWEEN @INI AND @FIN AND X.ItemCode=A.ItemCode),0)-ISNULL((SELECT SUM(Z.Quantity*Z.Price) FROM [BASE_A].[dbo].[OINV] Y INNER JOIN [BASE_A].[dbo].[INV1] Z ON Z.DocEntry=Y.DocEntry WHERE Y.DocDate BETWEEN @INI AND @FIN AND Z.ItemCode=A.ItemCode),0)'Ventas Base A',
ISNULL((SELECT SUM(X.Quantity) FROM [BASE_B].[dbo].[OINV] W INNER JOIN [BASE_B].[dbo].[INV1] X ON X.DocEntry=W.DocEntry WHERE W.DocDate BETWEEN @INI AND @FIN AND X.ItemCode=A.ItemCode),0)-ISNULL((SELECT SUM(Z.Quantity) FROM [BASE_B].[dbo].[OINV] Y INNER JOIN [BASE_B].[dbo].[INV1] Z ON Z.DocEntry=Y.DocEntry WHERE Y.DocDate BETWEEN @INI AND @FIN AND Z.ItemCode=A.ItemCode),0)'Cantidad Base B',
ISNULL((SELECT SUM(Y.Quantity*Y.Price) FROM [BASE_B].[dbo].[OINV] W INNER JOIN [BASE_B].[dbo].[INV1] X ON X.DocEntry=W.DocEntry WHERE W.DocDate BETWEEN @INI AND @FIN AND X.ItemCode=A.ItemCode),0)-ISNULL((SELECT SUM(Z.Quantity*Z.Price) FROM [BASE_B].[dbo].[OINV] Y INNER JOIN [BASE_B].[dbo].[INV1] Z ON Z.DocEntry=Y.DocEntry WHERE Y.DocDate BETWEEN @INI AND @FIN AND Z.ItemCode=A.ItemCode),0)'Ventas Base B'
FROM @MAESTRO_ITEMS A
GROUP BY A.ItemCode, A.ItemName
ORDER BY A.ItemCode
END

Espero te ayude

Slds

former_member188440
Active Contributor
0 Kudos

Si quieres algo para conectar varias DI, checa este link

[]

former_member188440
Active Contributor
0 Kudos

No lo conozco, pero se me ocurre que con un UNION extraigas la informacion, desde cualquiera de las compañias

Solo agregando el nombre de la base de datos antecediendo a las tablas