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

ayuda con if o case????

Estas en el tema de ayuda con if o case???? en el foro de SQL Server en Foros del Web. como estan, les hago una consulta, ya estoy medio cansado de probar esta consulta, a ver si alguien me puede ayudar, lo que quiero es ...
  #1 (permalink)  
Antiguo 16/04/2009, 13:01
 
Fecha de Ingreso: abril-2008
Mensajes: 5
Antigüedad: 16 años, 1 mes
Puntos: 0
ayuda con if o case????

como estan, les hago una consulta, ya estoy medio cansado de probar esta consulta, a ver si alguien me puede ayudar, lo que quiero es tener en una grilla un listado de productos que yo hice, y que se verifique si ya esta exportado, asi en la grilla agrego un campo mas que liste los datos del producto, mas un campo, que si ya esta en la tabla exportacion diga EXPORTADO y si no encuentra en la tabla exportacion me el campo tiene que decir EN DEPOSITO, algo asi estoy usando ahora, pero no me trae nada


IF (select Codigo FROM
Produccion WHERE bomcodigo not in (select bomcodigo FROM detalleExportacion ))
BEGIN

SELECT *, 'En deposito' as Estado
FROM BomProduccion
END
ELSE
begin
SELECT *, 'Exportado' as Estado
FROM BomProduccion
end
  #2 (permalink)  
Antiguo 16/04/2009, 13:40
 
Fecha de Ingreso: abril-2008
Mensajes: 5
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: ayuda con if o case????

o alguna otra cosa que pueda utilizar, gracias a todos!!!
  #3 (permalink)  
Antiguo 16/04/2009, 14:34
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 15 años, 11 meses
Puntos: 220
Respuesta: ayuda con if o case????

El error esta en q no puedes evaluar una consulta directamente para esto debes utilizar variables

Código:
     DECLARE @COD VARCHAR(100)
     SELECT @COD = CODIGO FROM PRODUCCION WHERE BOMCODIGO NOT IN (SELECT BOMCODIGO FROM DETALLEEXPORTACION)
     IF NOT @COD IS NULL
         SELECT *,'En Deposito' as Estado FROM BomProduccion
     ELSE
         SELECT *, 'Exportado' as Estado FROM BomProduccion
GO
esto lo podrias poner dentro de un procedimiento almacenado para q sea mas flexible y con una sola llamada ejecutarlo
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #4 (permalink)  
Antiguo 17/04/2009, 10:11
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 9 meses
Puntos: 39
Respuesta: ayuda con if o case????

Prueba asi:
Código sql:
Ver original
  1. SELECT p.*, CASE WHEN t.codigo IS NULL THEN 'En deposito' ELSE 'Exportado' END AS Estado
  2. FROM BomProduccion p
  3. LEFT JOIN (
  4. SELECT Codigo FROM Produccion WHERE bomcodigo NOT IN (SELECT bomcodigo FROM detalleExportacion )
  5. ) t ON p.id=t.codigo
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #5 (permalink)  
Antiguo 17/04/2009, 15:02
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Respuesta: ayuda con if o case????

una alternativa mas...

Código:
SELECT  p.*
      , case when b.codigo IS NULL 
             then 'En deposito' 
             else 'Exportado' end AS Estado
FROM Produccion p
LEFT JOIN (select bomcodigo FROM detalleExportacion group by bomcodigo ) b
ON    p.bomcodigo = b.bomcodigo
Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #6 (permalink)  
Antiguo 17/04/2009, 19:31
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 10 meses
Puntos: 180
Respuesta: ayuda con if o case????

Andres, Flaviovich, ustedes son la viva muestra de que podemos seguir aprendiendo cada dia mas.............

Saludos
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 16:40.