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

SQL principiante

Estas en el tema de SQL principiante en el foro de SQL Server en Foros del Web. Hola a todos, necesito algo de ayuda dado que estoy iniciandome en esto de SQL, tengo que sacar un informe de una base de datos ...
  #1 (permalink)  
Antiguo 13/10/2009, 07:19
 
Fecha de Ingreso: octubre-2009
Mensajes: 4
Antigüedad: 14 años, 6 meses
Puntos: 0
SQL principiante

Hola a todos, necesito algo de ayuda dado que estoy iniciandome en esto de SQL, tengo que sacar un informe de una base de datos de sql. son datos de ventas.

select expediente, articulo, descripción, cantidad, importe...
el campo importe depende del campo articulo, si articulo = 'material' o articulo = 'instalacion', el valor del importe seria la suma de otra select anidada sum(importes en el pedido de compra) si el campo articulo no es ninguna de los anteriores entonces importe es un campo al que puedo apuntar.

mas o menos
select expediente, articulo, descripcion, cantidad, (si articulo <> mat o inst importe, si no (select sum(importes where tipodocumento = pedido) where... join ... order by...)
where ... join ... order by ...

no encuentro la manera en que me funcione ni la condición que define el campo importe ni la consulta anidada.
Si alguien me puede echar una mano le agradezco de antemano.

Saludos cordiales
Luis
  #2 (permalink)  
Antiguo 13/10/2009, 08:12
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: SQL principiante

Seria mas o menos asi:
Código sql:
Ver original
  1. SELECT expediente, articulo, descripcion, cantidad,
  2. CASE WHEN articulo = 'mat' OR articulo = 'inst' THEN importe,
  3. ELSE (SELECT SUM(importes ) FROM tutabla WHERE tipodocumento = pedido) END
  4. FROM otratabla
  5. JOIN ...
  6. WHERE ...
  7. ORDER BY
Pero yo te recomiendo formar conjuntos y luego unirlos por join.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #3 (permalink)  
Antiguo 13/10/2009, 08:15
 
Fecha de Ingreso: octubre-2009
Mensajes: 4
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: SQL principiante

Muchas gracias por tu respuesta,
lo de los conjuntos me lo puedes plantear con un ejemplo o un enlace a documentacion?

Gracias de nuevo y saludos
Luis
  #4 (permalink)  
Antiguo 13/10/2009, 08:49
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: SQL principiante

Por lo menos tendrias 2 conjuntos o subconsultas: ventas y pedidos de compra.
La estructura seria algo asi:
Código sql:
Ver original
  1. SELECT expediente, articulo, descripcion, cantidad,
  2. CASE WHEN articulo = 'mat' OR articulo = 'inst' THEN importe ELSE importes END
  3. FROM ventas V
  4. INNER JOIN (SELECT doc,SUM(importes)[importes] FROM pedido_compra GROUP BY doc) P ON <los campos que tengan en comun>
  5. WHERE ...
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
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:01.