Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-10-2018
Yulexis Yulexis is offline
Miembro
 
Registrado: sep 2016
Posts: 19
Poder: 0
Yulexis Va por buen camino
Les explico mejor.

Tengo la siguiente tabla en ACCESS:

Fecha | Importe | Entidad | Estado | Tipo_de_Moneda
1/2/2018 14.5 Cualquiera pagada CUC
2/2/2018 6.30 Otra pagada CUP
3/2/2018 8 Otra pagada CUC
4/2/2018 4 Otra pagada CUP

Lo que necesito es en una consulta obtener los siguientes datos:
Importe_CUP = 10.3
Importe_CUC = 22.5

Ya he intentado de todo pero nada.
Con las consultas del inicio funciona pero solo con un ADOQuery para cada una.
Responder Con Cita
  #2  
Antiguo 04-10-2018
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Si utilizas un ADOQuery con la siguiente SQL deberían salir los datos que necesitas:

Código SQL [-]
Select TipoMoneda, SUM(Importe) from Tabla4 GROUP bY TipoMoneda


Código:
TipoMoneda   Importe
-----------------------
CUC              22,50
CUP              10,30
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 04-10-2018
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Aunque no es lo que necesitas exactamente sí contesta a una cuestión que has planteado al principio.
Utilizando un único TADOquery SI hay la posibilidad de ejecutar varias consultas independientes y acceder a los resultados.

Es decir, podemos añadir a la propiedad SQL algo como esto:

Código SQL [-]
select * from TABLA1;
select * from TABLA2;
select * from TABLA3;

Y podemos recuperar los Datos en tres Recordset diferentes.

Si utilizamos en siguiente código:

Código Delphi [-]
var
  rs:_Recordset;
  i:OleVariant;
begin
  query.Close;
  query.Open;

  rs := query.Recordset;
  Memo1.Lines.Add('--------------------------');
  while Assigned(rs) do begin
    while (not rs.EOF) do begin
      Memo1.Lines.Add(rs.Fields[0].Value);
      rs.MoveNext;
    end;
    rs := query.Recordset.NextRecordset(i);
    Memo1.Lines.Add('--------------------------');
  end;

Podemos obtener todos los recordset de la query (las 3 tablas) y todos los registros de cada recordset (tabla)
Y el resultado en pantalla sería algo así:


Código:
--------------------------
Campo1 AAAAAA Tabla1
Campo1 BBBBBB Tabla1
--------------------------
Campo1 CCCCCC Tabla2     
Campo1 DDDDDD Tabla2
--------------------------
Campo1 EEEEEE Tabla3     
Campo1 FFFFFF Tabla3
--------------------------
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #4  
Antiguo 04-10-2018
Yulexis Yulexis is offline
Miembro
 
Registrado: sep 2016
Posts: 19
Poder: 0
Yulexis Va por buen camino
Thumbs up [Resuelto]

Gracias mamcx y Neftali(La segunda ves que me ayudas hermano)


Resolví el problema con la siguiente SQL la cual armé luego de leer de que dentro de una llamada SQL se puede implementar un If...Then:


Código SQL [-]
SELECT
    Sum(iif(fact.Tipo_de_Moneda='CUP',fact.Importe, 0)) AS Importe_Total_CUP,
    Sum(iif(fact.Tipo_de_Moneda='CUC',fact.Importe, 0)) AS Importe_Total_CUC,
    Sum(iif(fact.Tipo_de_Moneda='CUP' AND fact.Estado='Facturada',fact.Importe, 0)) AS Importe_Sin_Pagar_CUP,
    Sum(iif(fact.Tipo_de_Moneda='CUC' AND fact.Estado='Facturada',fact.Importe, 0)) AS Importe_Sin_Pagar_CUC,
    Sum(iif(fact.Tipo_de_Moneda='CUP' AND fact.Estado='Pagada',fact.Importe, 0)) AS Importe_Pagado_CUP,
    Sum(iif(fact.Tipo_de_Moneda='CUC' AND fact.Estado='Pagada',fact.Importe, 0)) AS Importe_Pagado_CUC
FROM Facturas as fact

Esto me funciona perfectamente, se vinculan cada uno de los campos de la consulta con sus respectivas Label y listo (los muestro pero puedo hacer cualquier cosa con ellos).



Espero me den su opinión de si es o no una forma eficiente de realizarlo. Cómo será el consumo de recurso cuando tenga una gran cantidad de registros?
Responder Con Cita
  #5  
Antiguo 04-10-2018
Yulexis Yulexis is offline
Miembro
 
Registrado: sep 2016
Posts: 19
Poder: 0
Yulexis Va por buen camino
Así me ha quedado. En colores los datos que obtengo con la SQL.
Imágenes Adjuntas
Tipo de Archivo: jpg facturas.jpg (35,1 KB, 15 visitas)
Responder Con Cita
Respuesta



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
Unir los campos de dos consultas Choclito SQL 0 17-05-2013 22:40:47
Como unir dos consultas en acces Pachlu SQL 6 17-06-2011 16:11:40
Unir dos consultas SQL carloskock SQL 1 26-10-2008 08:54:58
Unir 2 Consultas en una sola hmoner SQL 12 24-05-2006 06:20:42
unir 2 consultas con campos diferentes.. sakuragi SQL 7 03-10-2005 10:12:28


La franja horaria es GMT +2. Ahora son las 21:24:29.


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