Дифференцировать Результаты с Равными нумерациями SQL Server

У меня есть вид Произведенного SQL, в который я звоню потом из-за Системы Управления, мое намерение состоит в том, чтобы соединять 3 базы данных, которые идентичны, но каждая представляет предприятие и так мочь унифицировать данные.


Однако моя проблема коренится в том, что, когда sql выполняет мой вид, этот запутывает нумерации произведенных заказов и складывает их в заказы с той же нумерацией, но другого предприятия (ОСНОВАНИЯ) производя фальшивую информацию.

Пример

Tengo el pedido Nº 00010000617 del talonario 8o

Tengo el pedido Nº 00010000617 del talonario 95

То, что надеялось, что он делает вид, состояло в том, чтобы показывать эти заказы, отделенные чековой книжкой, но в Вашем месте, Он складывает их игнорируя один из двух, а именно или добавляет совсем 80 или 95.

Это код SQL:

 SELECT *

  GVA21.TALON_PED AS [Desc. talonario], 
  GVA21.NRO_PEDIDO AS [Nro Pedido], 
  GVA14.RAZON_SOCI AS [Razon social], 
  CASE WHEN GVA03.COD_ARTICU = ' ' THEN NULL ELSE GVA03.COD_ARTICU END AS [Cod. 
  Articulo], 
  GVA03.PRECIO AS [Precio], 
  GVA03.CANT_PEDID AS [Cantidad Pedida], 
  GVA21.COD_CLIENT AS [Nro Cliente],  
  GVA21.ESTADO WHEN 1 THEN 'INGRESADO' WHEN 2 THEN 'APROBADO' WHEN 3 THEN 
  'CUMPLIDO' WHEN 4 THEN 'CERRADO' WHEN 5 THEN 'ANULADO' WHEN 6 THEN 'REVISADO' 
  WHEN 7 THEN 'DESAPROBADO' ELSE '' END AS [Estado],
  SUM (CASE 'BIMONCTE' WHEN 'BIMONCTE' THEN (CASE GVA10.MON_CTE WHEN 1 THEN 
  GVA03.PRECIO ELSE (GVA03.PRECIO * GVA21.COTIZ) END) * (1 - (GVA03.DESCUENTO) / 
  100) * (GVA03.CANT_PEDID) * ( 1 - GVA21.PORC_DESC/100 ) WHEN 'BIORIGEN' THEN 
  (CASE GVA10.MON_CTE WHEN 1 THEN (GVA03.PRECIO / GVA21.COTIZ) ELSE GVA03.PRECIO  
  END) * ((1 - (GVA03.DESCUENTO) / 100)) * (GVA03.CANT_PEDID) * ( 1 - 
  GVA21.PORC_DESC/100) WHEN 'BICOTIZ'  THEN (CASE GVA10.MON_CTE WHEN 1 THEN 
  (GVA03.PRECIO)  / CASE WHEN 1 = 0 THEN 1 ELSE 1 END ELSE (GVA03.PRECIO) * 
  GVA21.COTIZ  /  CASE WHEN 1 = 0 THEN 1 ELSE 1 END END) * ((1 - 
  (GVA03.DESCUENTO) / 100)) * (GVA03.CANT_PEDID) * ( 1 - GVA21.PORC_DESC/100) 
  END) AS [Total sin Impuestos],
  SUM   (GVA03.CANT_PEDID * (CASE WHEN GVA21.N_LISTA = 4 THEN GVA03.PRECIO * 
  GVA21.COTIZ ELSE GVA03.PRECIO * 1.21 END)) AS 'TOTAL',
  GVA21.LEYENDA_1 AS [Leyenda],
  CASE GVA21.ESTADO WHEN 1 THEN 'FELIPE SA' WHEN 2 THEN 'FELIPE SA' WHEN 3 THEN 'FELIPE SA' WHEN 4 THEN 'FELIPE SA' WHEN 5 THEN 'FELIPE SA' ELSE '' END AS [Empresa],
CASE WHEN GVA21.FECHA_PEDI = '01/01/1800' THEN NULL ELSE GVA21.FECHA_PEDI END AS [Fecha Pedido] 


FROM dbo.GVA21 
LEFT JOIN GVA14 ON GVA14.COD_CLIENT = GVA21.COD_CLIENT
LEFT JOIN GVA03 ON GVA03.NRO_PEDIDO = GVA21.NRO_PEDIDO
LEFT JOIN GVA10 ON GVA10.NRO_DE_LIS = GVA21.N_LISTA

GROUP BY GVA03.COD_ARTICU, GVA21.NRO_PEDIDO, GVA21.TALON_PED, GVA21.ESTADO, GVA21.COD_CLIENT, GVA14.RAZON_SOCI, GVA21.ESTADO, GVA21.FECHA_PEDI, GVA21.FECHA_ENTR, GVA03.CANT_PEN_D, GVA10.MON_CTE, GVA03.PRECIO, 
GVA21.LEYENDA_1, GVA03.CANT_PEDID, GVA03.CANT_PEN_F, GVA21.FECHA_PEDI*

Я протестировал группировать это различных форм, добавлять колонны Ваших соответствующих идентификаций они, чтобы стараться отделять, но всегда мне заканчивает тем, что дает тот же результат.

Это мои первые шаги в SQL, так что это конечно была какая-то ошибка в синтаксисе или каком-то плохом использовании Joins, но правда - что не, где - проблема.

0
задан 07.03.2019, 14:02
1 ответ

Мне не совсем ясно вопрос, но я понимаю, что ты хочешь "PK" с заказом и чековой книжкой, asГ - который я протестировал бы прилагать и делать order by на приложенном поле

 SELECT 
  GVA21.TALON_PED AS [Desc. talonario], 
  GVA21.NRO_PEDIDO AS [Nro Pedido], 
  GVA14.RAZON_SOCI AS [Razon social], 
  CASE WHEN GVA03.COD_ARTICU = ' ' THEN NULL ELSE GVA03.COD_ARTICU END AS [Cod. 
  Articulo], 
  GVA03.PRECIO AS [Precio], 
  GVA03.CANT_PEDID AS [Cantidad Pedida], 
  GVA21.COD_CLIENT AS [Nro Cliente],  
  GVA21.ESTADO WHEN 1 THEN 'INGRESADO' WHEN 2 THEN 'APROBADO' WHEN 3 THEN 
  'CUMPLIDO' WHEN 4 THEN 'CERRADO' WHEN 5 THEN 'ANULADO' WHEN 6 THEN 'REVISADO' 
  WHEN 7 THEN 'DESAPROBADO' ELSE '' END AS [Estado],
  SUM (CASE 'BIMONCTE' WHEN 'BIMONCTE' THEN (CASE GVA10.MON_CTE WHEN 1 THEN 
  GVA03.PRECIO ELSE (GVA03.PRECIO * GVA21.COTIZ) END) * (1 - (GVA03.DESCUENTO) / 
  100) * (GVA03.CANT_PEDID) * ( 1 - GVA21.PORC_DESC/100 ) WHEN 'BIORIGEN' THEN 
  (CASE GVA10.MON_CTE WHEN 1 THEN (GVA03.PRECIO / GVA21.COTIZ) ELSE GVA03.PRECIO  
  END) * ((1 - (GVA03.DESCUENTO) / 100)) * (GVA03.CANT_PEDID) * ( 1 - 
  GVA21.PORC_DESC/100) WHEN 'BICOTIZ'  THEN (CASE GVA10.MON_CTE WHEN 1 THEN 
  (GVA03.PRECIO)  / CASE WHEN 1 = 0 THEN 1 ELSE 1 END ELSE (GVA03.PRECIO) * 
  GVA21.COTIZ  /  CASE WHEN 1 = 0 THEN 1 ELSE 1 END END) * ((1 - 
  (GVA03.DESCUENTO) / 100)) * (GVA03.CANT_PEDID) * ( 1 - GVA21.PORC_DESC/100) 
  END) AS [Total sin Impuestos],
  SUM   (GVA03.CANT_PEDID * (CASE WHEN GVA21.N_LISTA = 4 THEN GVA03.PRECIO * 
  GVA21.COTIZ ELSE GVA03.PRECIO * 1.21 END)) AS 'TOTAL',
  GVA21.LEYENDA_1 AS [Leyenda],
  CASE GVA21.ESTADO WHEN 1 THEN 'FELIPE SA' WHEN 2 THEN 'FELIPE SA' WHEN 3 THEN 'FELIPE SA' WHEN 4 THEN 'FELIPE SA' WHEN 5 THEN 'FELIPE SA' ELSE '' END AS [Empresa],
CASE WHEN GVA21.FECHA_PEDI = '01/01/1800' THEN NULL ELSE GVA21.FECHA_PEDI END AS [Fecha Pedido] 


FROM dbo.GVA21 
LEFT JOIN GVA14 ON GVA14.COD_CLIENT = GVA21.COD_CLIENT
LEFT JOIN GVA03 ON GVA03.NRO_PEDIDO = GVA21.NRO_PEDIDO
LEFT JOIN GVA10 ON GVA10.NRO_DE_LIS = GVA21.N_LISTA

GROUP BY GVA03.COD_ARTICU, **GVA21.NRO_PEDIDO+GVA21.TALON_PED**, GVA21.ESTADO, GVA21.COD_CLIENT, GVA14.RAZON_SOCI, GVA21.ESTADO, GVA21.FECHA_PEDI, GVA21.FECHA_ENTR, GVA03.CANT_PEN_D, GVA10.MON_CTE, GVA03.PRECIO, 
GVA21.LEYENDA_1, GVA03.CANT_PEDID, GVA03.CANT_PEN_F, GVA21.FECHA_PEDI*
1
ответ дан 19.11.2019, 22:27