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 24-01-2007
Avatar de Carmelo Cash
Carmelo Cash Carmelo Cash is offline
Miembro
 
Registrado: jul 2003
Ubicación: Buenos Aires
Posts: 261
Poder: 21
Carmelo Cash Va por buen camino
Cool No puedo hacer UNION

Hola Foro:
Quisiera saber si me pueden ayudar a hacer esto con InterBase 1.0.0.326.
Tengo la siguiente consulta que muestra el total de ventas de cada terminal para un día específico (solo las terminales 4 ,5 Y 8).


Select
T.BRANCH_CODE as Terminal,
M.Description as Descripcion,
sum(T.TOTAL_AMOUNT) as Total

From V_TRANSACTIONS T
Join V_Master M on (M.BRANCH_CODE=T.BRANCH_CODE)

Where Extract (Day From T.TRANSACTION_DATE) = 31 /*<--- COLOCAR EL DIA */
and Extract (Month From T.TRANSACTION_DATE) = 05 /*<--- COLOCAR EL MES */
and Extract (Year From T.TRANSACTION_DATE) = 2005 /*<--- COLOCAR EL AÑO */
and T.BRANCH_CODE in (4,5,8) /*<----- Colocar las Terminales que se incluyen) */

Group by T.BRANCH_CODE,M.Description

El Resultado obtenido es:
TERMINAL--DESCRIPCION--TOTAL
--------4--Don Pepito---------50
--------5--Don José-----------60
--------8--Mi Abuela---------120


Tengo esta otra (que es casi igual) pero muestra la suma de todas las terminales

Select

Count(Distinct(T.BRANCH_CODE)) As Terminal,
'TOTAL' As Descripcion ,
Sum(T.TOTAL_AMOUNT) As Total

From V_TRANSACTIONS T

Where Extract (Day From T.TRANSACTION_DATE) = 31 /*<--- COLOCAR EL DIA */
and Extract (Month From T.TRANSACTION_DATE) = 05 /*<--- COLOCAR EL MES */
and Extract (Year From T.TRANSACTION_DATE) = 2005 /*<--- COLOCAR EL AÑO */
and T.BRANCH_CODE in (4,5,8) /*<----- Colocar las Terminales que se incluyen) */

El Resultado obtenido es:
TERMINAL--DESCRIPCION--TOTAL
--------3--Total---------------230


Mi intención es lograr el siguiente resultado:

TERMINAL--DESCRIPCION--TOTAL
--------4--Don Pepito---------50
--------5--Don José-----------60
--------8--Mi Abuela---------120
--------3--Total---------------230


Estoy probando colocar UNION entre las dos consultas pero aparece el siguiente error:

Dynamic SQL Error
SQL error code = -104
Invalid command
Data type unknown


estoy escribiendo así:


Select
T.BRANCH_CODE as Terminal,
M.Description as Descripcion,
sum(T.TOTAL_AMOUNT) as Total

From V_TRANSACTIONS T
Join V_Master M on (M.BRANCH_CODE=T.BRANCH_CODE)

Where Extract (Day From T.TRANSACTION_DATE) = 31 /*<--- COLOCAR EL DIA */
and Extract (Month From T.TRANSACTION_DATE) = 05 /*<--- COLOCAR EL MES */
and Extract (Year From T.TRANSACTION_DATE) = 2005 /*<--- COLOCAR EL AÑO */
and T.BRANCH_CODE in (4,5,8) /*<----- Colocar las Terminales que se incluyen) */

Group by T.BRANCH_CODE,M.Description

UNION

Select

Count(Distinct(T.BRANCH_CODE)) As Terminal,
'TOTAL' As Descripcion ,
Sum(T.TOTAL_AMOUNT) As Total

From V_TRANSACTIONS T

Where Extract (Day From T.TRANSACTION_DATE) = 31 /*<--- COLOCAR EL DIA */
and Extract (Month From T.TRANSACTION_DATE) = 05 /*<--- COLOCAR EL MES */
and Extract (Year From T.TRANSACTION_DATE) = 2005 /*<--- COLOCAR EL AÑO */
and T.BRANCH_CODE in (4,5,8) /*<----- Colocar las Terminales que se incluyen) */

Por favor si alguien me puede decir en que me estoy equivocando (no vale decir profesión).

Desde ya muchas gracias.
Responder Con Cita
  #2  
Antiguo 24-01-2007
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
El problema aqui esta en que los tipos de datos no coinciden, por eso te marca ese error, lo que tienes que hacer es un CAST para que los tipos de datos sean iguales...

Código SQL [-]
... M.Description as Descripcion, ...
--supongo que aquí es donde no coinciden, dale el mismo tamaño que tiene el campo descripcion
... Cast('TOTAL' as char(30) As Descripcion , ...

si eso no te lo resuelve, prueba hacer un cast tambien al campo terminal.
__________________

Responder Con Cita
  #3  
Antiguo 24-01-2007
fdelamo fdelamo is offline
Miembro
 
Registrado: oct 2005
Ubicación: Sotoca de Tajo - Guadalajara (ESP)
Posts: 86
Poder: 19
fdelamo Va por buen camino
En Interbase 1.0 no se, pero en Firebird, en los UNION, los campos deben ser exactamente iguales.

En tu ejemplo M.Description as Descripcion y 'TOTAL' as Descripcion, por lo que debes hacer un CAST

Ej:
Código SQL [-]
CAST('TOTAL' AS VARCHAR(50)) AS Descripcion
, suponiendo que el campoM.Descripcion sea un VARCHAR(50). Esto debes hacerlo para todos los campos

Espero que te sirva de ayuda

Un saludo
Responder Con Cita
  #4  
Antiguo 24-01-2007
Avatar de Carmelo Cash
Carmelo Cash Carmelo Cash is offline
Miembro
 
Registrado: jul 2003
Ubicación: Buenos Aires
Posts: 261
Poder: 21
Carmelo Cash Va por buen camino
Gracias

Gracias mil!!!

Funcionó como me dijeron, colocando Cast en los dos primeros campos.

Nuevamente gracias!!!


Select
Cast(T.BRANCH_CODE as Varchar(10)) as Terminal,
Cast(M.Description as Varchar(30)) As Descripcion,
sum(T.TOTAL_AMOUNT) as Total
...
...

UNION

Select
cast(Count(Distinct(T.BRANCH_CODE)) as VarChar(10)) As Terminal,
Cast('TOTAL' as Varchar(30)) As Descripcion,
Sum(T.TOTAL_AMOUNT) As Total
....
Responder Con Cita
  #5  
Antiguo 24-01-2007
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
que bueno, aunque no es necesario hacerlo en las dos consultas... solo es necesario que la segunda, tenga el mismo tipo de datos que la primera.
__________________

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
Como Puedo Hacer???????? jeshu252006 Conexión con bases de datos 7 27-10-2006 17:00:35
No puedo hacer Backup El_Perrito Firebird e Interbase 3 22-01-2005 02:08:56
no puedo hacer telnet Alejo Linux 2 25-09-2004 19:51:40
como puedo hacer una conexion ssh quetzal Varios 0 09-07-2004 05:23:59
Que puedo hacer Rolando Varios 3 12-09-2003 22:10:50


La franja horaria es GMT +2. Ahora son las 05:11:53.


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