Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Para maestros en SQL Server

Estas en el tema de Para maestros en SQL Server en el foro de SQL Server en Foros del Web. Hola a todos Tengo la siguiente consulta declare @LOYALTY_GROUP_ID numeric(4) declare @DATE1 varchar(100) declare @DATE2 varchar(100) declare @IDENTIFICATION_ID varchar(100) declare @COMPANY_OFFICE_ID numeric(4) set @LOYALTY_GROUP_ID = ...
  #1 (permalink)  
Antiguo 21/05/2011, 10:12
 
Fecha de Ingreso: mayo-2011
Mensajes: 4
Antigüedad: 13 años, 7 meses
Puntos: 0
Para maestros en SQL Server

Hola a todos
Tengo la siguiente consulta
declare @LOYALTY_GROUP_ID numeric(4)
declare @DATE1 varchar(100)
declare @DATE2 varchar(100)
declare @IDENTIFICATION_ID varchar(100)
declare @COMPANY_OFFICE_ID numeric(4)

set @LOYALTY_GROUP_ID = 4
set @DATE1 = '01/01/2011'
set @DATE2 = '24/05/2011'
set @IDENTIFICATION_ID = ''
set @COMPANY_OFFICE_ID = 1


select distinct LF_RECORD.CLIENT_ID,
LF_CLIENT.IDENTIFICATION_ID,
LF_CLIENT.FIRST_NAME +' '+LF_CLIENT.LAST_NAME as CLIENT_FULL_NAME,
LF_CLIENT.EXTERNAL_ID,
LF_CLIENT_IDENTIFICATION.CODE,
SUM(LF_RECORD.VALUE) as SUM_VALUE,
SUM(LF_RECORD.QUANTITY) as SUM_QUANTITY
from
LF_RECORD
inner join
LF_CLIENT on LF_CLIENT.CLIENT_ID = LF_RECORD.CLIENT_ID
inner join
BA_COMPANY_OFFICE on BA_COMPANY_OFFICE.COMPANY_OFFICE_ID = LF_RECORD.COMPANY_OFFICE_ID
inner join
BA_COMPANY on BA_COMPANY.COMPANY_ID = BA_COMPANY_OFFICE.COMPANY_ID
inner join
LF_CLIENT_IDENTIFICATION on LF_CLIENT_IDENTIFICATION.CLIENT_ID = LF_CLIENT.CLIENT_ID
where
LF_RECORD.LOYALTY_GROUP_ID = @LOYALTY_GROUP_ID and LF_RECORD.RECORD_TYPE='1'
and LF_RECORD.DOCUMENT_DATE BETWEEN @DATE1 AND @DATE2
and LF_CLIENT.IDENTIFICATION_ID like '%' + CAST((CASE WHEN @IDENTIFICATION_ID = '' THEN IDENTIFICATION_ID ELSE @IDENTIFICATION_ID END) AS VARCHAR) + '%'
and LF_RECORD.COMPANY_OFFICE_ID in (@COMPANY_OFFICE_ID)
group by LF_RECORD.CLIENT_ID,LF_CLIENT.IDENTIFICA… +' '+LF_CLIENT.LAST_NAME,LF_CLIENT.EXTERNAL… LF_CLIENT_IDENTIFICATION.CODE

Esta arroja el siguiente resultado


CLIENT_ID IDENTIFICATION_ID CLIENT_FUL… EXTERNAL_ID CODE SUM_VALUE SUM_QUANTITY
6 1017167504 JULIAN MESA FHC936 810 3.469.090.000 349.628
6 1017167504 JULIAN MESA FHC936 FHC936 3.469.090.000 349.628
10 10238095 GUILLERMO OCHOA CASTRILLON TPX041 218 6.354.000.000 753.459
10 10238095 GUILLERMO OCHOA CASTRILLON TPX041 TPX041 6.354.000.000 753.459
11 102465985 CONSTRUMADERAS LTDA. ELL364 328 2.689.730.000 945.933
11 102465985 CONSTRUMADERAS LTDA. ELL364 329 2.689.730.000 945.933
11 102465985 CONSTRUMADERAS LTDA. ELL364 330 2.689.730.000 945.933



Mi pregunta es, que debo colocar en la consulta SQL y en donde, para que solo me seleccione el primer registro de cada cliente?
  #2 (permalink)  
Antiguo 23/05/2011, 08:43
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 4 meses
Puntos: 774
Respuesta: Para maestros en SQL Server

Prueba con la funcion ROW_NUMBER ()

Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 24/05/2011, 15:18
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 5 meses
Puntos: 180
Respuesta: Para maestros en SQL Server

Ya hemos comentado que las fechas deben manejarse en formato ANSI (yyyy-mm-dd)
__________________
MCTS Isaias Islas
  #4 (permalink)  
Antiguo 24/05/2011, 16:43
 
Fecha de Ingreso: mayo-2011
Mensajes: 4
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Para maestros en SQL Server

Finalmente la solucion fue usar la funcion max()

MAX(LF_CLIENT_IDENTIFICATION.CODE)

Necesitaba solo un registro por cada cliente sin importar cual fuera en este caso.


select distinct LF_RECORD.CLIENT_ID,LF_CLIENT.IDENTIFICATION_ID,LF _CLIENT.FIRST_NAME +' '+LF_CLIENT.LAST_NAME as CLIENT_FULL_NAME,LF_CLIENT.EXTERNAL_ID,MAX(LF_CLIE NT_IDENTIFICATION.CODE) as CODE,
SUM(LF_RECORD.VALUE) as SUM_VALUE, SUM(LF_RECORD.QUANTITY) as SUM_QUANTITY
from
LF_RECORD inner join
LF_CLIENT on LF_CLIENT.CLIENT_ID = LF_RECORD.CLIENT_ID inner join
BA_COMPANY_OFFICE on BA_COMPANY_OFFICE.COMPANY_OFFICE_ID = LF_RECORD.COMPANY_OFFICE_ID inner join
BA_COMPANY on BA_COMPANY.COMPANY_ID = BA_COMPANY_OFFICE.COMPANY_ID inner join
LF_CLIENT_IDENTIFICATION on LF_CLIENT_IDENTIFICATION.CLIENT_ID = LF_CLIENT.CLIENT_ID
where
LF_RECORD.LOYALTY_GROUP_ID = @LOYALTY_GROUP_ID and LF_RECORD.RECORD_TYPE='1'
and LF_RECORD.DOCUMENT_DATE BETWEEN @DATE1 AND @DATE2
and LF_CLIENT.IDENTIFICATION_ID like '%' + CAST((CASE WHEN @IDENTIFICATION_ID = '' THEN IDENTIFICATION_ID ELSE @IDENTIFICATION_ID END) AS VARCHAR) + '%'
and LF_RECORD.COMPANY_OFFICE_ID in (@COMPANY_OFFICE_ID)
group by LF_RECORD.CLIENT_ID,LF_CLIENT.IDENTIFICATION_ID,LF _CLIENT.FIRST_NAME +' '+LF_CLIENT.LAST_NAME,LF_CLIENT.EXTERNAL_ID


Muchas gracias a Todos
  #5 (permalink)  
Antiguo 24/05/2011, 19:09
Avatar de abel_c_b  
Fecha de Ingreso: junio-2008
Mensajes: 103
Antigüedad: 16 años, 5 meses
Puntos: 1
Respuesta: Para maestros en SQL Server

Cita:
Iniciado por iislas Ver Mensaje
Ya hemos comentado que las fechas deben manejarse en formato ANSI (yyyy-mm-dd)
Volvistes??? o soy yo el que tenía días de no haber llegado por acá......
  #6 (permalink)  
Antiguo 25/05/2011, 12:37
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 5 meses
Puntos: 180
Respuesta: Para maestros en SQL Server

Si, regrese el lunes pasado a mi terruño querido, fueron 12 horas de vuelo, Paris-Mexico y la verdad, que estuvo muy satisfactorio el viaje, gracias.....
__________________
MCTS Isaias Islas

Etiquetas: maestros, server, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:22.