Ver Mensaje Individual
  #3 (permalink)  
Antiguo 28/04/2013, 00:16
ayhoria
 
Fecha de Ingreso: abril-2013
Ubicación: Veracruz
Mensajes: 9
Antigüedad: 11 años
Puntos: 0
Respuesta: Como Eliminar filas con al menos un campo igual o grupar

Gracias me funciona bien, había implementado esto:

Código SQL:
Ver original
  1. SELECT [ORD_IDORDEN], HYP = MAX([ORD_TIPORDEN]),
  2.     --MAX(ESTADO = case when [ORE_STATUS]='A' then 'ABIERTA' when [ORE_STATUS]='DG' then 'DETENIDA X GERENCIA' when [ORE_STATUS]='DR' then 'DETENIDA POR REFACC' when [ORE_STATUS]='P' then 'EN PROCESO' ELSE 'CERRADA' END),
  3.     FECHA = MAX([ORE_FECHAORD])
  4.     FROM [GOMSA356].[dbo].[SER_ORDENDET] A, [GOMSA356].[dbo].[SER_ORDEN] B
  5.     WHERE A.[ORD_IDORDEN] = [ORE_IDORDEN] AND (B.[ORE_STATUS]= 'A' OR B.[ORE_STATUS] = 'DG' OR B.[ORE_STATUS] = 'DR' OR B.[ORE_STATUS] = 'P' OR B.[ORE_STATUS] = 'T') AND ORE_FECHAORD LIKE '%/04/2013' AND ORD_TIPORDEN IN('H', 'J', 'Q', 'S', 'Z')
  6.     GROUP BY [ORD_IDORDEN])

y me da los registros que quiero; claro con distinct elimino filas duplicadas buen dato!!

ya con tu ajuste que da así:

Código SQL:
Ver original
  1. SELECT DISTINCT
  2.     [ORD_IDORDEN],
  3.     [ORD_TIPORDEN],
  4.     Estado=CASE WHEN [ORE_STATUS]='A' THEN 'ABIERTA' WHEN [ORE_STATUS]='DG' THEN 'DETENIDA X GERENCIA' WHEN [ORE_STATUS]='DR' THEN 'DETENIDA POR REFACC' WHEN [ORE_STATUS]='P' THEN 'EN PROCESO' ELSE 'CERRADA' END,
  5.     [ORE_FECHAORD]
  6. FROM
  7.     [GOMSA356].[dbo].[SER_ORDENDET] A, [GOMSA356].[dbo].[SER_ORDEN] B
  8. WHERE
  9.     A.[ORD_IDORDEN] = [ORE_IDORDEN]
  10.     AND (B.[ORE_STATUS]= 'A'
  11.     OR B.[ORE_STATUS] = 'DG'
  12.     OR B.[ORE_STATUS] = 'DR'
  13.     OR B.[ORE_STATUS] = 'P' OR B.[ORE_STATUS] = 'T')
  14.     AND ORE_FECHAORD LIKE '%/04/2013'
  15.     AND ORD_TIPORDEN IN('H', 'J', 'Q', 'S', 'Z')
  16. ORDER BY [ORD_IDORDEN]

pero lo que queria era contarlos y me quedo así:

Código SQL:
Ver original
  1. SELECT COUNT
  2.      (DISTINCT [ORE_IDORDEN]) AS HYP
  3. FROM
  4.      [GOMSA356].[dbo].[SER_ORDENDET] A,
  5.      [GOMSA356].[dbo].[SER_ORDEN] B
  6. WHERE
  7.      A.[ORD_IDORDEN] = [ORE_IDORDEN]
  8.      AND (B.[ORE_STATUS]= 'A'
  9.      OR B.[ORE_STATUS] = 'DG'
  10.      OR B.[ORE_STATUS] = 'DR'
  11.      OR B.[ORE_STATUS] = 'P'
  12.      OR B.[ORE_STATUS] = 'T')
  13.      AND ORE_FECHAORD LIKE '%/04/2013'
  14.      AND ORD_TIPORDEN IN('H', 'J', 'Q', 'S', 'Z')
  15.     --ORDER BY [ORD_IDORDEN]

Una duda más: mira ya lo pude contar pero de esa consulta quiero me de los conteos de varias casos este seria para HYP pero necesito que en en el mismo conteo me salga 3 tipos y las unicas condiciones son las siguientes

AND ORD_TIPORDEN IN('H', 'J', 'Q', 'S', 'Z') AS HYP
AND ORD_TIPORDEN IN('I', 'E', 'N', 'R', 'T', 'V', 'A') AS MECANICA
AND ORD_TIPORDEN IN('L', 'O', 'X') AS REFACCIONES

No se si se pueda hacer con case o con join, me tendria que dar lo siguiente:

HYP MECANICA REFACCIONES
67 77 45

Última edición por ayhoria; 28/04/2013 a las 15:32