Ver Mensaje Individual
  #6 (permalink)  
Antiguo 03/11/2014, 15:07
mogotocoro
 
Fecha de Ingreso: febrero-2005
Mensajes: 68
Antigüedad: 19 años, 10 meses
Puntos: 0
Respuesta: Consultas complejas en Servidor remoto usando el linkserver

Código SQL:
Ver original
  1. DECLARE @fin AS VARCHAR(20), @inicio AS VARCHAR(20),@NUMEROOPI    VARCHAR(20);
  2. SELECT @inicio=dateadd(dd,-2, datediff(dd,0,getdate()))
  3. SELECT @fin = DATEADD(s, -1, DATEADD(DAY, 0, CONVERT(DATETIME, CONVERT(DATE, GETDATE()))));
  4. --drop table LOCALHOST.ORIGEN.TMP_TRANRESPROD
  5. IF NOT EXISTS(SELECT TOP 1 * FROM SYSOBJECTS WITH (NOLOCK) WHERE NAME='TMP_TRANRESPROD')  BEGIN
  6.        CREATE TABLE localhost.origen.[dbo].[TMP_TRANRESPROD] (
  7.                [ID] [NUMERIC](18, 0) IDENTITY (1, 1) NOT NULL ,
  8.                [CodTabla] [VARCHAR] (100) NULL ,
  9.                [CodItem] [VARCHAR](100) NULL,
  10.                [Descrip1] [VARCHAR] (50) NULL ,
  11.                [Unidad] [VARCHAR] (50) NULL,
  12.                [ExActual] [FLOAT] NULL,
  13.                [Cant] [FLOAT] NULL,
  14.                [Precio] [FLOAT] NULL,
  15.                [Utilidad] [FLOAT] NULL,
  16.                [Costo] [FLOAT] NULL,
  17.                [EsUnid] INT NULL,
  18.        ) ON [PRIMARY]
  19.        ALTER TABLE [dbo].[TMP_TRANRESPROD] WITH NOCHECK ADD
  20.        CONSTRAINT [IX_TMP_TRANRESPROD] UNIQUE  NONCLUSTERED
  21.        (
  22.          [ID],
  23.          [CodTabla],
  24.          [CodItem]
  25.        ) ON [PRIMARY]
  26. END
  27. DECLARE @varCodUser VARCHAR(100)
  28. SET @varCodUser = 'PERSONAL'
  29. DELETE FROM TMP_TRANRESPROD WHERE CodTabla = @varCodUser
  30. INSERT INTO TMP_TRANRESPROD
  31. SELECT @varCodUser,
  32.      SI.CodItem,
  33.      SI.Descrip1,
  34.      ISNULL((SELECT Unidad FROM SAPROD WHERE CodProd = SI.CodItem),'')  AS Unidad,
  35.      ISNULL((SELECT Existen FROM SAPROD WHERE CodProd = SI.CodItem),0.00)  AS ExActual,
  36.      SI.Cantidad*SI.CantMayor*B.Signo AS Cant,
  37.      B.Signo* SI.Cantidad*SI.CantMayor*(SI.Precio -
  38.      (B.Descto1 + B.Descto2)*SI.Precio/B.Monto+
  39.      B.Fletes*SI.Precio/B.Monto) AS Precio,
  40.      B.Signo*SI.Cantidad*SI.CantMayor*(SI.Precio -
  41.      (B.Descto1 + B.Descto2)*SI.Precio/B.Monto+
  42.      B.Fletes*SI.Precio/B.Monto) -
  43.      B.Signo*SI.Cantidad*SI.CantMayor*SI.Costo AS Utilidad,
  44.      B.Signo*SI.Cantidad*SI.CantMayor*SI.Costo AS Costo,
  45.      SI.EsUnid
  46. FROM SAITEMFAC SI, SAFACT B
  47.  WHERE (B.FechaE >= @inicio AND B.FechaE <= @fin)  AND (B.TipoFac = 'A' OR B.TipoFac = 'B')  AND B.Monto <> 0
  48.      AND SI.NroLineaC = 0 AND SI.EsUnid = 0
  49.      AND (SI.NumeroD = B.NumeroD AND SI.TipoFac = B.TipoFac)
  50. ORDER BY SI.CodItem
  51. SELECT CASE t.EsUnid WHEN 0 THEN ''
  52.       WHEN 1 THEN '!'
  53. END + t.CodItem AS CodItem,
  54.  ISNULL((SELECT Descrip FROM SAPROD WHERE CodProd = t.CodItem),ISNULL((SELECT Descrip FROM SASERV WHERE CodServ = t.CodItem),''))  AS Descrip1,
  55.  t.Unidad,
  56.  (SELECT DISTINCT ti.ExActual FROM TMP_TRANRESPROD ti WHERE ti.CodItem = t.CodItem AND ti.EsUnid = t.EsUnid AND CodTabla = @varCodUser) AS ExActual,
  57.      SUM(t.Cant) AS TotCant,
  58.      SUM(t.Precio) AS TotPrecio,
  59.      SUM(t.Costo) AS TotCosto,
  60.      SUM(t.Utilidad) AS TotalUtil
  61. FROM TMP_TRANRESPROD t
  62. WHERE (SELECT SUM(ti.Cant) FROM TMP_TRANRESPROD ti WHERE ti.CodItem = t.CodItem AND CodTabla = @varCodUser GROUP BY CodItem) <> 0 AND t.CodTabla = @varCodUser
  63. GROUP BY t.CodItem, t.Unidad, t.EsUnid
  64. ORDER BY t.CodItem

Última edición por gnzsoloyo; 05/11/2014 a las 09:23