on 08-01-2011 11:56 PM
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.
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
108 | |
12 | |
11 | |
6 | |
5 | |
4 | |
3 | |
3 | |
3 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.