FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
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. |
#2
|
||||
|
||||
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...
si eso no te lo resuelve, prueba hacer un cast tambien al campo terminal.
__________________
|
#3
|
|||
|
|||
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: , suponiendo que el campoM.Descripcion sea un VARCHAR(50). Esto debes hacerlo para todos los campos Espero que te sirva de ayuda Un saludo |
#4
|
||||
|
||||
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 .... |
#5
|
||||
|
||||
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.
__________________
|
|
|
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 |
|