Bases de Datos > SQL Server

 Distinct En Unico Campo

(1/1)

ArKaNtOs:
Hola amigos, ya tenia mucho que no podia ingresar, sobre todo por el trabajo me da pena porque en este caso solo vengo por algo de ayuda, espero se apiaden algo de mi  :unsure: , bueno les cuento mi dilema:

resulta que estoy tratando de mejorar un Store Procedure o en su defecto la consulta :P
es que tengo un store que realiza su cometido pero se lleva como 5 a 10 minutos en hacerlo en el mejor de los casos  :scream: entonces me di a la tarea de tratarlo de mejorar con un solo query, pero el problema es que no me funciona de manera adecuada, les doy un ejemplo:

tengo una tabla de clientes con los datos de cliente (por supuesto :P) y la de movimientos que es todas las compras abonos y de mas movimientos del cliente,
el detalle es que tengo que tengo que mostrar el numero de cuenta del cliente su saldo su ultimo abono y la fecha de ese abono para lo cual plantee este query:


--- Código: Text --- SELECT DISTINCT  A.Numero_Cuenta as Cuenta,  A.Paterno + ' ' + A.Materno + ' ' + A.Nombre as Nombre,  A.Saldo_Vencido as Vencido,  A.Saldo as Saldo,  convert(datetime, B.Fecha) as Fecha,  B.TotalFROM  tbl_Clientes A WITH(INDEX(PK_tbl_Clientes), NOLOCK) LEFT JOIN  tbl_Movimiento B WITH(INDEX(PK_tbl_Movimiento), NOLOCK) ON    A.Numero_Cuenta = B.Numero_CuentaWHERE  A.cve_Estado = 2 And UltVencido > 2 And B.cve_Movimiento = 3ORDER BY  A.numero_Cuenta, convert(datetime, B.Fecha) Desc 
el detalle es que me arroja todos los abonos de la cuenta y no solo un abono esto debido a que las fechas pues son variables y el distinct es para todos los campos no solo para un campo, quisiera ver que puedo realizar, o que estoy haciendo mal, de hecho ya probe con GROUP BY y nada, muchas gracias anticipadas

ArKaNtOs:
Hola de nuevo amigos, despues de tanta frustación y mentadas de ..... lo logre, era muy simple con una subconsulta. les dejo la solución por si a alguien le llegase a servir ;)


--- Código: Text ---  SELECT     A.Numero_Cuenta as Cuenta,    A.Paterno + ' ' + A.Materno + ' ' + A.Nombre as Nombre,    A.Saldo_Vencido as Vencido,    A.Saldo,    max(convert(datetime, B.Fecha)) as FechaUlt,    (      SELECT TOP 1 C.Total       FROM tbl_Movimiento C       WHERE         C.Numero_Cuenta = A.Numero_Cuenta         And C.cve_Movimiento = 3         And max(convert(datetime, B.Fecha)) = convert(datetime, C.Fecha)    ) as Total  FROM    tbl_Clientes A WITH(INDEX(PK_tbl_Clientes), NOLOCK) LEFT JOIN    tbl_Movimiento B WITH(INDEX(PK_tbl_Movimiento), NOLOCK) ON      A.Numero_Cuenta = B.Numero_Cuenta  WHERE    A.cve_Estado = 2 And UltVencido >=4 And B.cve_Movimiento = 3  GROUP BY    A.numero_Cuenta, A.Paterno + ' ' + A.Materno + ' ' + A.Nombre, A.Saldo_Vencido, A.Saldo  ORDER BY    A.numero_Cuenta   :kicking:

Estaba sencillo no? :P  :scream:

Navegación

[0] Índice de Mensajes

Ir a la versión completa