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

Consulta sql

Estas en el tema de Consulta sql en el foro de SQL Server en Foros del Web. Hola saludos a todos..tengo una duda....tengo una consulta en sql server 2008, la cual, me arroja 3 campos...nombre, ventas y edad...entonces como le puedo hacer ...
  #1 (permalink)  
Antiguo 13/07/2011, 14:26
 
Fecha de Ingreso: junio-2011
Mensajes: 329
Antigüedad: 12 años, 10 meses
Puntos: 2
Consulta sql

Hola saludos a todos..tengo una duda....tengo una consulta en sql server 2008, la cual, me arroja 3 campos...nombre, ventas y edad...entonces como le puedo hacer si, quiero que a la hora de hacer la consulta si la venta esta en 0 no me aparezca el nombre pero si la edad....si me explico..?..ojala y me puedan ayudar.saludos..
  #2 (permalink)  
Antiguo 13/07/2011, 14:45
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: Consulta sql

Mete un CASE

SELECT CASE WHEN Ventas = 0 THEN '' ELSE Nombre END AS Nombre,
ventas,
edad
__________________
MCTS Isaias Islas
  #3 (permalink)  
Antiguo 13/07/2011, 18:15
 
Fecha de Ingreso: junio-2011
Mensajes: 329
Antigüedad: 12 años, 10 meses
Puntos: 2
Respuesta: Consulta sql

me marca un error , puedes checar este query..? necesito que no me muestre el nombre si la meta=0, q muestre el campo meta en blanco....y los demas con sus datos correspondientes..

select
susuarios.logname as Nombre_Vendedor,sales2.id,
metasxvendedor.meta / 31 *(Day( getdate() )-1) as meta,
sum (venta) as Venta,
(metasxvendedor.meta / 31 * (Day( getdate() )-1)) - sum (venta) as Diferencia,
(Metasxvendedor.meta / 31 * (Day( getdate() )-1) -Sum (Venta)) / (metasxvendedor.meta / 31 * (Day( getdate() )-1)) * 100 as Porcentaje,
case meta
when 120000
then ''
else '1' end
Nombre_Vendedor
from sales2
  #4 (permalink)  
Antiguo 13/07/2011, 20:06
Avatar de Joch_pa  
Fecha de Ingreso: octubre-2009
Ubicación: Pachuca De Soto, Hidalgo, Mexico, Mexico
Mensajes: 122
Antigüedad: 14 años, 6 meses
Puntos: 7
Respuesta: Consulta sql

Prueba con :

Código SQL:
Ver original
  1. SELECT
  2.     CASE WHEN venta = 0 THEN '' ELSE Nombre_Vendedor END AS [Nombre_Vendedor]    
  3.     , id
  4.     , meta
  5.     , venta
  6.     , Diferencia
  7.     ,  Porcentaje
  8. FROM
  9. (
  10.     SELECT
  11.         susuarios.logname AS Nombre_Vendedor
  12.         , sales2.id
  13.         , metasxvendedor.meta / 31 *(DAY( getdate() )-1) AS meta
  14.         , SUM (venta) AS Venta
  15.         , (metasxvendedor.meta / 31 * (DAY( getdate() )-1)) - SUM (venta) AS Diferencia
  16.         , (Metasxvendedor.meta / 31 * (DAY( getdate() )-1) -SUM (Venta)) / (metasxvendedor.meta / 31 * (DAY( getdate() )-1)) * 100 AS Porcentaje
  17.     FROM sales2
  18. ) A

Solo que no estoy seguro de lo que es : "susuarios", "Metasxvendedor" son tablas?
si son tablas, no las veo en tu consulta y por lo tanto hay que agregarlas.

Última edición por Joch_pa; 13/07/2011 a las 20:12
  #5 (permalink)  
Antiguo 13/07/2011, 20:52
 
Fecha de Ingreso: junio-2011
Mensajes: 329
Antigüedad: 12 años, 10 meses
Puntos: 2
Respuesta: Consulta sql

si, son tablas....este es el query completo q estoy usando...lo q hace es q me compara y me suma informacion de 3 tablas, entonces si un usuario tiene el campo meta vacio o en nulo me tiene q dar la id, y la venta pero sin el nombre del usuario, el problema q me esta dando es q el tipo de dato de meta es money y el resultado de meta viene d una consulta por lotanto al hacer una consulta me esta dando valor null no un 0, el codigo q me pusiste lee igual para valor NULL...si me explico..?..gracias por tu ayuda


select
susuarios.logname as Nombre_Vendedor,sales2.id,
metasxvendedor.meta / 31 *(Day( getdate() )-1) as meta,
sum (venta) as Venta,
(metasxvendedor.meta / 31 * (Day( getdate() )-1)) - sum (venta) as Diferencia,
(Metasxvendedor.meta / 31 * (Day( getdate() )-1) -Sum (Venta)) / (metasxvendedor.meta / 31 * (Day( getdate() )-1)) * 100 as Porcentaje,
case metasxvendedor.meta / 31 *(Day( getdate() )-1)
when metasxvendedor.meta / 31 *(Day( getdate() )-1) = convert (money ,'0')
THEN ''
else susuarios.logname end
as Nombre

from sales2
left join susuarios on
sales2.id=susuarios.id
and susuarios.sid=sales2.sid
left join metasxvendedor on
sales2.sid=metasxvendedor.sid
and sales2.id=metasxvendedor.id
and metasxvendedor.idate >='7/01/2011'
and metasxvendedor.idate <='7/12/2011'
where
sales2.venta <>0
and sales2.sid='6'
and sales2.idate>='7/1/2011'
and sales2.idate<='7/12/2011'
group by
susuarios.logname,susuarios.id,sales2.id, metasxvendedor.meta
ORDER BY
PORCENTAJE DESC
  #6 (permalink)  
Antiguo 14/07/2011, 05:29
Avatar de Joch_pa  
Fecha de Ingreso: octubre-2009
Ubicación: Pachuca De Soto, Hidalgo, Mexico, Mexico
Mensajes: 122
Antigüedad: 14 años, 6 meses
Puntos: 7
Respuesta: Consulta sql

Casi le entiendo, pero para no errar, podrías poner el resultado de tu query tal cual te da, y también cual es el resultado esperado
  #7 (permalink)  
Antiguo 14/07/2011, 07:28
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: Consulta sql

Cita:
Iniciado por mrprogman Ver Mensaje
si, son tablas....este es el query completo q estoy usando...lo q hace es q me compara y me suma informacion de 3 tablas, entonces si un usuario tiene el campo meta vacio o en nulo me tiene q dar la id, y la venta pero sin el nombre del usuario, el problema q me esta dando es q el tipo de dato de meta es money y el resultado de meta viene d una consulta por lotanto al hacer una consulta me esta dando valor null no un 0, el codigo q me pusiste lee igual para valor NULL...si me explico..?..gracias por tu ayuda


select
susuarios.logname as Nombre_Vendedor,sales2.id,
metasxvendedor.meta / 31 *(Day( getdate() )-1) as meta,
sum (venta) as Venta,
(metasxvendedor.meta / 31 * (Day( getdate() )-1)) - sum (venta) as Diferencia,
(Metasxvendedor.meta / 31 * (Day( getdate() )-1) -Sum (Venta)) / (metasxvendedor.meta / 31 * (Day( getdate() )-1)) * 100 as Porcentaje,
case metasxvendedor.meta / 31 *(Day( getdate() )-1)
when metasxvendedor.meta / 31 *(Day( getdate() )-1) = convert (money ,'0')
THEN ''
else susuarios.logname end
as Nombre

from sales2
left join susuarios on
sales2.id=susuarios.id
and susuarios.sid=sales2.sid
left join metasxvendedor on
sales2.sid=metasxvendedor.sid
and sales2.id=metasxvendedor.id
and metasxvendedor.idate >='7/01/2011'
and metasxvendedor.idate <='7/12/2011'
where
sales2.venta <>0
and sales2.sid='6'
and sales2.idate>='7/1/2011'
and sales2.idate<='7/12/2011'
group by
susuarios.logname,susuarios.id,sales2.id, metasxvendedor.meta
ORDER BY
PORCENTAJE DESC
El codigo que te pasaron funciona para lo que quieres nada mas tienes que poner en el case

case
when meta=0 or meta is null then campo else otro_campo end as meta


Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #8 (permalink)  
Antiguo 14/07/2011, 09:25
 
Fecha de Ingreso: junio-2011
Mensajes: 329
Antigüedad: 12 años, 10 meses
Puntos: 2
Respuesta: Consulta sql

actualmente si yo ejecuto el query me da como resultado esto:
Nombre_Vendedor id Meta Venta Diferencia Porcentaje
MGarcia 159 41935.4832 -13642.09 55577.5732 132.53

y esto es lo q necesito si meta es igual a 0, no me va calcular los campos por q necesito ese dato,pero si me debe de arrojar el id y el nombre de vendedor debe de aparecer vacio
Nombre_Vendedor id Meta Venta Diferencia Porcentaje
Null 159 0 -13642.09 0 0


ahorita checo el codigo q enviaste...muchas gracias por la ayuda
  #9 (permalink)  
Antiguo 18/07/2011, 21:17
 
Fecha de Ingreso: junio-2011
Mensajes: 329
Antigüedad: 12 años, 10 meses
Puntos: 2
Respuesta: Consulta sql

Hola , saludos a todos..acabo de checar el query q enviaste josh, nada mas tengo una duda..me marca un error al correrlo, yo miro todo bien pero no se q esta pasando me marca el sig error:
Sintaxis incorrecta cerca de ')'.
y este es el codigo.


SELECT
case when venta = 0 then '' else Nombre_Vendedor END AS [Nombre_Vendedor],
id, meta, venta, Diferencia, Porcentaje
FROM
(
SELECT
susuarios.nombre AS Nombre_Vendedor,
usuarios.id, metas.meta / 31 *(Day( getdate() )-1) AS meta,
sum (venta) AS Venta,
(metas.meta / 31 * (Day( getdate() )-1)) - sum (venta) AS Diferencia,
(Metas.meta / 31 * (Day( getdate() )-1) -Sum (Venta)) / (metas.meta / 31 * (Day( getdate() )-1)) * 100 AS Porcentaje
FROM sales2
)


me falta algo o hice algo mal.?..saludos y gracias por sus respuestas
  #10 (permalink)  
Antiguo 18/07/2011, 23:47
Avatar de Joch_pa  
Fecha de Ingreso: octubre-2009
Ubicación: Pachuca De Soto, Hidalgo, Mexico, Mexico
Mensajes: 122
Antigüedad: 14 años, 6 meses
Puntos: 7
Respuesta: Consulta sql

Te falta la A después del ultimo paréntesis

Código SQL:
Ver original
  1. SELECT ....
  2. FROM
  3. (
  4. ....
  5. ) A
  #11 (permalink)  
Antiguo 19/07/2011, 09:21
 
Fecha de Ingreso: junio-2011
Mensajes: 329
Antigüedad: 12 años, 10 meses
Puntos: 2
Respuesta: Consulta sql

disculpa pero q significa la A...?
  #12 (permalink)  
Antiguo 19/07/2011, 09:23
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: Consulta sql

Segun entiendo es un ALIAS
__________________
MCTS Isaias Islas
  #13 (permalink)  
Antiguo 19/07/2011, 10:21
 
Fecha de Ingreso: junio-2011
Mensajes: 329
Antigüedad: 12 años, 10 meses
Puntos: 2
Respuesta: Consulta sql

Estoy haciendo una pruebas con el case..y me esta marcando un error q no entiendo.creo q q tiene q ver con la logica...alguien sabe q significa

este es el error--Msg 170, Level 15, State 1, Line 3
Line 3: Incorrect syntax near '>'.

y este es el query

SELECT permiso,id,
logname = CASE id
WHEN id > 50 THEN 'A'
WHEN id 45 THEN 'B'
ELSE 'unknow'
END,
FROM susuarios
  #14 (permalink)  
Antiguo 19/07/2011, 10:42
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: Consulta sql

Si esta mal seria asi:

SELECT permiso,id,
CASE id
WHEN id > 50 THEN 'A'
WHEN id 45 THEN 'B'
ELSE 'unknow'
END as logname
FROM susuarios


Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #15 (permalink)  
Antiguo 19/07/2011, 12:05
 
Fecha de Ingreso: junio-2011
Mensajes: 329
Antigüedad: 12 años, 10 meses
Puntos: 2
Respuesta: Consulta sql

Saludos a todos...he estado haciendo pruebas con este query y no me funciona...he estado deslosando en otros subquerys y si funciona pero a la hora de juntarlo truena..ok....vi un mensaje pusiste Josh

Solo que no estoy seguro de lo que es : "susuarios", "Metasxvendedor" son tablas?
si son tablas, no las veo en tu consulta y por lo tanto hay que agregarlas.


SELECT
case when venta = 0 then '' else Nombre_Vendedor END AS [Nombre_Vendedor],
id,
meta,
venta,
Diferencia,
Porcentaje,
FROM
(
SELECT
susuarios.logname AS Nombre_Vendedor,
sales2.id,
metasxvendedor.meta / 31 *(Day( getdate() )-1) AS meta,
sum (venta) AS Venta,
(metasxvendedor.meta / 31 * (Day( getdate() )-1)) - sum (venta) AS Diferencia,
(Metasxvendedor.meta / 31 * (Day( getdate() )-1) -Sum (Venta)) / (metasxvendedor.meta / 31 * (Day( getdate() )-1)) * 100 AS Porcentaje
FROM sales2
)A


agregarlas en donde en la primera consulta del select..?.por q en la segunda ya arroja el resultado..saludos y gracias por tu respuesta
  #16 (permalink)  
Antiguo 19/07/2011, 13:12
 
Fecha de Ingreso: junio-2011
Mensajes: 329
Antigüedad: 12 años, 10 meses
Puntos: 2
Respuesta: Consulta sql

ya lo resolvi..........................gracias
  #17 (permalink)  
Antiguo 19/07/2011, 20:05
Avatar de Joch_pa  
Fecha de Ingreso: octubre-2009
Ubicación: Pachuca De Soto, Hidalgo, Mexico, Mexico
Mensajes: 122
Antigüedad: 14 años, 6 meses
Puntos: 7
Respuesta: Consulta sql

y al final como quedo?
  #18 (permalink)  
Antiguo 21/07/2011, 10:11
 
Fecha de Ingreso: junio-2011
Mensajes: 329
Antigüedad: 12 años, 10 meses
Puntos: 2
Respuesta: Consulta sql

al final quedo asi............gracias por sus respuestas..

SELECT SALES2.ID,
MetasxVendedor.Meta / 31 * (Day( getdate() )-1) AS Meta,
SUM(SALES2.VENTA) AS Venta,
MetasxVendedor.Meta / 31 * 13 - SUM(SALES2.VENTA) AS Diferencia,
(MetasxVendedor.Meta / 31 * (Day( getdate() )-1) - SUM(SALES2.VENTA)) / (MetasxVendedor.Meta / 31 * (Day( getdate() )-1)) * 100 AS Porcentaje,
case
when metasxvendedor.meta is null
THEN ''
else susuarios.logname end
as Nombre

FROM SALES2
LEFT OUTER JOIN
SUsuarios ON SALES2.ID = SUsuarios.id AND SUsuarios.sid = SALES2.SID LEFT OUTER JOIN MetasxVendedor ON SALES2.SID = MetasxVendedor.SID
AND SALES2.ID = MetasxVendedor.ID
AND (MetasxVendedor.IDATE >= @IDATE)
AND (MetasxVendedor.IDATE <= @IDATE2)
WHERE (SALES2.VENTA <> 0)
AND (SALES2.SID = @SID)
AND (SALES2.IDATE >= @IDATE)
AND (SALES2.IDATE <=@IDATE2)
GROUP BY SUsuarios.logname, SUsuarios.id, SALES2.ID, MetasxVendedor.Meta
ORDER BY (MetasxVendedor.Meta / 31 * (Day( getdate() )-1) - SUM(SALES2.VENTA)) / (MetasxVendedor.Meta / 31 * (Day( getdate() )-1)) * 100 DESC

Etiquetas: server, sql, campos
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 02:41.