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

Seleccionar datos del resultado de una consulta

Estas en el tema de Seleccionar datos del resultado de una consulta en el foro de SQL Server en Foros del Web. Buenas tardes amigos (GMT -4.30) tengo un problemilla y se los presento, estoy jalando datos de un sistema administrativo con un punto de ventas y ...
  #1 (permalink)  
Antiguo 25/01/2013, 15:43
Avatar de JuJoGuAl  
Fecha de Ingreso: julio-2009
Ubicación: Venezuela
Mensajes: 754
Antigüedad: 14 años, 9 meses
Puntos: 19
Pregunta Seleccionar datos del resultado de una consulta

Buenas tardes amigos (GMT -4.30) tengo un problemilla y se los presento,

estoy jalando datos de un sistema administrativo con un punto de ventas y necesito hacer unos reportes de ventas por producto y estoy haciendo las consultas para tal.

ahora bien como necesito jalar las ventas de unos productos, por ejemplo, CAFE (CANT y TOTAL) LECHE (CANT y TOTAL) mi idea es jalar todos esos datos en un orden algo asi CANTCAFE,TOTALCAFE,CANTLECHE,TOTALLECHE...

ahora para sacar eso de las ventas necesito hacer un JOIN de 2 tablas para poder filtrar bien lo que quiero, asi que primero consulto todos los datos que sean FACTURAS y que esten en el rango de tiempo que necesito:

Código SQL:
Ver original
  1. SELECT
  2. *
  3. FROM ventas_detalles JOIN ventas ON VENTAS_DETALLES.CORRELATIVO_PRINCIPAL=ventas.CORRELATIVO
  4. WHERE
  5. (VENTAS.FECHA_EMISION BETWEEN '2012.12.01' AND '2012.12.31')
  6. AND (VENTAS.tipo_documento <> 'ODD')

esa consulta me trae todas las ventas del mes de DIC 2012, ahora de esas ventas yo quiero sacar los TE que se vendieron (CANTIDAD y el TOTAL) y lo intente hacer asi:
Código SQL:
Ver original
  1. SELECT
  2. (SUM(IIF(VENTAS.tipo_documento = 'FAC',ventas_detalles.CANTIDAD,0))-SUM(IIF(VENTAS.tipo_documento = 'DEV',ventas_detalles.CANTIDAD,0))) AS cantidad
  3. FROM
  4. (SELECT
  5. *
  6. FROM ventas_detalles JOIN ventas ON VENTAS_DETALLES.CORRELATIVO_PRINCIPAL=ventas.CORRELATIVO
  7. WHERE
  8. (VENTAS.FECHA_EMISION BETWEEN '2012.12.01' AND '2012.12.31')
  9. AND (VENTAS.tipo_documento <> 'ODD')) productos

y obtengo este error:

Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Invalid command.
COLUMN The column DEPOSITO_CODIGO was specified multiple times for derived table PRODUCTOS.
(0,312 sec)

Basicamente la pregunta es, como obtengo datos avanzados de una consulta previa, es decir hacer una consulta de una consulta, nose si se me entiende....
  #2 (permalink)  
Antiguo 25/01/2013, 15:46
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Seleccionar datos del resultado de una consulta

¿Es SQL SERVER tu motor de base de datos?
__________________
MCTS Isaias Islas
  #3 (permalink)  
Antiguo 25/01/2013, 15:48
Avatar de JuJoGuAl  
Fecha de Ingreso: julio-2009
Ubicación: Venezuela
Mensajes: 754
Antigüedad: 14 años, 9 meses
Puntos: 19
Respuesta: Seleccionar datos del resultado de una consulta

en realidad la base de datos esta en un MDF y las consultas que hago las hago desde un programa llamado "SQL Manager for InterBase & Firebird" ayer buscando hacer un IF con sql comente en un foro de MYSQL y como se que mis datos los maneja SQL pues creí que esta era la sección correcta
  #4 (permalink)  
Antiguo 25/01/2013, 15:55
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Seleccionar datos del resultado de una consulta

SELECT
(SUM(IIF(productos.tipo_documento = 'FAC',productos.CANTIDAD,0))-SUM(IIF(productos.tipo_documento = 'DEV',productos.CANTIDAD,0))) AS cantidad
FROM
(SELECT
*
FROM ventas_detalles JOIN ventas ON VENTAS_DETALLES.CORRELATIVO_PRINCIPAL=ventas.CORRE LATIVO
WHERE
(VENTAS.FECHA_EMISION BETWEEN '2012.12.01' AND '2012.12.31')
AND (VENTAS.tipo_documento <> 'ODD')) productos


Prueba con algo asi :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 25/01/2013, 15:59
Avatar de JuJoGuAl  
Fecha de Ingreso: julio-2009
Ubicación: Venezuela
Mensajes: 754
Antigüedad: 14 años, 9 meses
Puntos: 19
Respuesta: Seleccionar datos del resultado de una consulta

Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Invalid command.
COLUMN The column DEPOSITO_CODIGO was specified multiple times for derived table PRODUCTO.
  #6 (permalink)  
Antiguo 25/01/2013, 16:36
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Seleccionar datos del resultado de una consulta

de seguro tienes mas de una vez la columna deposito_codigo, estoy en lo cierto, la tienes en la tabla ventas_detalle y ventas right?

de ser asi tendrias que poner

SELECT
(SUM(IIF(productos.tipo_documento = 'FAC',productos.CANTIDAD,0))-SUM(IIF(productos.tipo_documento = 'DEV',productos.CANTIDAD,0))) AS cantidad
FROM
(SELECT
ventas.codigo_producto, bla bla bla
FROM ventas_detalles JOIN ventas ON VENTAS_DETALLES.CORRELATIVO_PRINCIPAL=ventas.CORRE LATIVO
WHERE
(VENTAS.FECHA_EMISION BETWEEN '2012.12.01' AND '2012.12.31')
AND (VENTAS.tipo_documento <> 'ODD')) productos


el error te lo marca porque hay 2 columnas con el mismo nombre(codigo_producto) y no le has indicado de que tabla va a sacar este dato.

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 25/01/2013, 16:42
Avatar de JuJoGuAl  
Fecha de Ingreso: julio-2009
Ubicación: Venezuela
Mensajes: 754
Antigüedad: 14 años, 9 meses
Puntos: 19
Respuesta: Seleccionar datos del resultado de una consulta

es que no estoy llamando ese campo y si ejecuto la consulta sola:

Código SQL:
Ver original
  1. SELECT
  2. *
  3. FROM ventas_detalles JOIN ventas ON VENTAS_DETALLES.CORRELATIVO_PRINCIPAL=ventas.CORRELATIVO
  4. WHERE
  5. (VENTAS.FECHA_EMISION BETWEEN '2012.12.01' AND '2012.12.31')
  6. AND (VENTAS.tipo_documento <> 'ODD')

esta si me trae los datos completos...
  #8 (permalink)  
Antiguo 25/01/2013, 16:59
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Seleccionar datos del resultado de una consulta

si estas usando

select * from tabla

estas llamando a todos los campos de esa tabla, si haces esto

select * from tabla inner join tabla2

estas llamando todos los campos de las 2 tablas, aqui el problema es que tienes 2 veces un campo con el mismo nombre.

ahora como estas haciendo:

select campo1,campo2 from(
select * from tabla1 inner join tabla2
) as tabla3

el problema es que el subquery trae el campo repetido 2 veces :), y al usarlo en un subquery necesita saber que campo es el que quieres o si quieres los 2 indicarlos que es tabla1.camporepetido, tabla2.camporepetido.

espero haberme explicado

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: select, sql, tabla
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 15:36.