Lunes 23 de Diciembre de 2024, 15:44
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Bases de Datos
»
SQL Server
(Moderador:
ElNapster
) »
Distinct En Unico Campo
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Distinct En Unico Campo (Leído 1895 veces)
ArKaNtOs
Miembro de PLATA
Mensajes: 1253
Nacionalidad:
Distinct En Unico Campo
«
en:
Jueves 8 de Mayo de 2008, 17:27 »
0
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
, bueno les cuento mi dilema:
resulta que estoy tratando de mejorar un Store Procedure o en su defecto la consulta
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
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
) 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.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 > 2 And B.cve_Movimiento = 3
ORDER 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
Tweet
solocodigo
el punto de encuentro de los programadores
VB
,
C
,
C++
,
.Net
,
Java
,
Delphi
,
Linux
,
Programacion de Videojuegos
,
ASM
,
Dudas Informaticas
.
ArKaNtOs
Miembro de PLATA
Mensajes: 1253
Nacionalidad:
Re: Distinct En Unico Campo
«
Respuesta #1 en:
Viernes 9 de Mayo de 2008, 17:42 »
0
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
Estaba sencillo no?
solocodigo
el punto de encuentro de los programadores
VB
,
C
,
C++
,
.Net
,
Java
,
Delphi
,
Linux
,
Programacion de Videojuegos
,
ASM
,
Dudas Informaticas
.
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Bases de Datos
»
SQL Server
(Moderador:
ElNapster
) »
Distinct En Unico Campo