Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-09-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.015
Poder: 23
oscarac Va por buen camino
no los agrupara porque la Columna NumeroF tiene valores diferente
acuerdate que en el Group se colocan los criterios para la agrupacion, pero se debe tener en cuenta los datos

Ejemplo
Cita:
Campo1 Campo2 Campo3
A B 1
C B 2
A C 3
Si agrupo Solo por el Campo1 tendre
Cita:
A 4
C 2
Si Agrupo por el campoA + CampoB tendre
Cita:
Campo1 Campo2 Campo3
A B 1
A C 3
C B 2
Quiza debas encontrar otra condicional para la agrupacion (podria ser tipo de Cliente)
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #2  
Antiguo 16-09-2011
Avatar de orioncomputer
orioncomputer orioncomputer is offline
Miembro
 
Registrado: may 2006
Ubicación: Maturin, Monagas, Venezuela
Posts: 18
Poder: 0
orioncomputer Va por buen camino
Saludos,
Gracias Oscarac por tu pronta respuesta y por tomarte el tiempo para leer mi inquietud.
Yo estoy claro de como funciona la sentencia agrupar, quizás al final debí aclarar que realmente estoy interesado en obtener un resultado como el señalado, no se si quizás hacer dos consultas o utilizar otra forma, pero al resultado que quiero llegar es que me las ordene por "NumeroF" o por lo menos este sea tomado en cuenta para respetar el orden de aparición de los resultados, luego me vaya mostrando bajo la condición "TipoCli" los valores agrupados, solo si este posee el valor de "0" o para los efectos visuales de "NoContribuyente", haga un alto al conseguir un valor "TipoCli = 1" y seguidamente al conseguir valores consecutivos bajo la misma condición, nuevamente me muestre valores agrupados.

Espero haber aclarado o ampliado un poco mas la inquietud señalada.

Gracias mil a todos por detenerse a revisar y aportar sus ideas.
Responder Con Cita
  #3  
Antiguo 16-09-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.015
Poder: 23
oscarac Va por buen camino
entonces me parece que debes utilizar otro recurso

quiza utilizando ClientDataset

tienes tu query donde jalas los datos sin agrupar y en el clientdataset lo vas ordenando de acuerdo a como tu quieres (Adicionando registros, editandolos, etc)
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #4  
Antiguo 16-09-2011
Avatar de orioncomputer
orioncomputer orioncomputer is offline
Miembro
 
Registrado: may 2006
Ubicación: Maturin, Monagas, Venezuela
Posts: 18
Poder: 0
orioncomputer Va por buen camino
Gracias nuevamente por tu pronta respuesta

Realmente lo quería en Sql ya que quería generar una vista e incorporarlo al ReportBuilder, pero voy a buscarle la vuelta creando cortes de control en el ReportBuider a ver como me va, gracias a tu comentario se me ocurre quizás que pueda.

Mil Gracias de Nuevo......
Responder Con Cita
  #5  
Antiguo 26-09-2011
abelg abelg is offline
Miembro
 
Registrado: jul 2004
Posts: 50
Poder: 23
abelg Va por buen camino
con que servidor de base de Datos estas trabajando porque si es Sql Server, se puede hacer, un cursor u otra cosa, nose me dices asi te lo puedo ver que se puede hacer.
Responder Con Cita
  #6  
Antiguo 11-10-2011
Avatar de orioncomputer
orioncomputer orioncomputer is offline
Miembro
 
Registrado: may 2006
Ubicación: Maturin, Monagas, Venezuela
Posts: 18
Poder: 0
orioncomputer Va por buen camino
Hola abelg , bueno ante todo las gracias por interesarte en el tema , te comento que estoy trabajando sobre SQL Server 2008, estoy tratando de que este resultado me lo de en forma dinámica, te explico, necesito crear un reporte para el usuario final en Report Builder , necesito crear una vista o algo que siempre que pida el reporte este actualizado con las facturas que estén en la base de datos, no se si con cursores se pueda armar una vista y no se si esto relentisa el proceso de la base de datos cuando un usuario este pidiendo dicho reporte y el resto este usando la aplicación de manera habitual, ya que la aplicación es cliente servidor y posee varios usuarios conectados en simultaneo elaborando facturas, compras, movimientos de bancos, etc., te comento lo de si se pone lenta la consulta, ya que tengo base de datos que manejan para un mes mas de 3000 registros de factura.

Las mil Gracias por tomarte el tiempo de leer mi inquietud y las gracias nuevamente por querer colaborar conmigo para solucionar esta consulta.
Responder Con Cita
  #7  
Antiguo 12-10-2011
abelg abelg is offline
Miembro
 
Registrado: jul 2004
Posts: 50
Poder: 23
abelg Va por buen camino
Hola, bueno aqui te posteo una solución espero te ayude.

Código SQL [-]
declare @TipoFac varchar(10),
  @NumeroP varchar(20),
  @Nombre varchar(100),
  @TipoCli varchar(50),
  @NumeroReal varchar(15),
  @Monto money,
  -- Para agrupar
  @Grupo int,
  @Nombreanterior varchar(100)
  

Create table #Factura  -- Esta Tabla es una representación de tu tabla real no es necesario crearla
(
  TipoFac varchar(10),
  NumeroP varchar(20),
  Nombre varchar(100),
  TipoCli varchar(50),
  NumeroF varchar(30),
  NumeroReal varchar(15),
  Monto money,
)

Create table #FacturaTmp -- Esta tabla la creas como esta
(
  TipoFac varchar(10),
  NumeroP varchar(20),
  Nombre varchar(100),
  TipoCli varchar(50),
  NumeroReal varchar(15),
  Monto money,
  Grupo int
)

insert into #Factura values('A', 'Z4A8086521', 'COPESIRA, C.A',  'Contibuyente', '00040263', '00040263',   173.400)
insert into #Factura values('A', 'Z4A8086521', 'UNIDAD EDUCATIVA FERMIN TORO', 'Contibuyente', '00040264', '00040264',   338.000)
insert into #Factura values('A', 'Z4A8086521', 'Ventas Diarias', 'NoContibuyente', '00040265 - 00040265','00040265',   267.340)
insert into #Factura values('A', 'Z4A8086521', 'ASOC. COOP. AMBARCA R.L', 'Contibuyente', '00040266', '00040266',   601.450)
insert into #Factura values('A', 'Z4A8086521', 'CONSEJO COMUNAL CRUZ PERAZA I', 'Contibuyente', '00040267', '00040267',   69.360)
insert into #Factura values('A', 'Z4A8086521', 'Ventas Diarias', 'NoContibuyente', '00040268 - 00040268','00040268',   213.740)
insert into #Factura values('A', 'Z4A8086521', 'Ventas Diarias', 'NoContibuyente', '00040269 - 00040269','00040269',   1597.400)
insert into #Factura values('A', 'Z4A8086521', 'Ventas Diarias', 'NoContibuyente', '00040270 - 00040270','00040270',   4.880)
insert into #Factura values('A', 'Z4A8086521', 'Ventas Diarias', 'NoContibuyente', '00040271 - 00040271','00040271',   97.530)
insert into #Factura values('A', 'Z4A8086521', 'Ventas Diarias', 'NoContibuyente', '00040272 - 00040272','00040272',   24.930)

declare FaturaCur Cursor For
Select TipoFac,
         NumeroP,
         Nombre,
         TipoCli,
         NumeroReal,
         Monto
from #Factura
order by NumeroReal

open FaturaCur
fetch next from FaturaCur into @Tipofac, @NumeroP, @Nombre, @TipoCli, @NumeroReal, @Monto
set @Nombreanterior = @Nombre
set @Grupo = 1

while @@FETCH_STATUS = 0 
begin
   if (@Nombreanterior <> @Nombre)
   begin
      set @Grupo = @Grupo + 1
      set @Nombreanterior = @Nombre
   end        
   insert into #FacturaTmp values (@Tipofac, @NumeroP, @Nombre, @TipoCli, @NumeroReal, @Monto, @Grupo)
   fetch next from FaturaCur into @Tipofac, @NumeroP, @Nombre, @TipoCli, @NumeroReal, @Monto                
end

close FaturaCur
deallocate FaturaCur

Select TipoFac,
         NumeroP,
         Nombre,
         TipoCli,
         CASE When MIN(NumeroReal) <> MAX(numeroReal) 
             then  MIN(NumeroReal) +    '-' + MAX(numeroReal) 
             else MIN(NumeroReal) end NumeroFactura,
         SUM(Monto) Monto
from #FacturaTmp
Group by TipoFac,
        NumeroP,
        Nombre,
        TipoCli,
        Grupo
order by
        CASE When MIN(NumeroReal) <> MAX(numeroReal) 
           then  MIN(NumeroReal) +    '-' + MAX(numeroReal)
           else MIN(NumeroReal) end


Drop table #Factura
Drop table #Facturatmp
Mira que estoy creando dos tablas temporales una es para poder simular tu tabla real la otra la uso si para la solución.
salu2

Última edición por abelg fecha: 12-10-2011 a las 17:08:03.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Pasar Variables de Forma a Forma con delphi.net ASP ASAPLTDA .NET 5 05-07-2007 21:51:31
Como Pasar Variables de Forma a Forma con delphi.net ASP ASAPLTDA Internet 2 02-07-2007 17:26:41
suma condicionada mediante QREXpr u otra solucion ciscu Impresión 6 13-01-2004 19:41:01
Como pasar parametros de una forma hija a otra forma hija luisreg OOP 3 17-09-2003 19:18:50
Agrupar ? ramiretor Impresión 1 16-05-2003 02:51:32


La franja horaria es GMT +2. Ahora son las 12:58:42.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi