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

como puedo traer don años en esta consulta los mismos campos

Estas en el tema de como puedo traer don años en esta consulta los mismos campos en el foro de SQL Server en Foros del Web. estimados tengo un problema en esta consulta muestro 1 año y sus 3 miperos meces Diciembre,Enero,Febrero Código PHP: select   case  when a . mes = 12 then  ...
  #1 (permalink)  
Antiguo 23/09/2010, 10:04
Avatar de a83
a83
 
Fecha de Ingreso: noviembre-2005
Ubicación: Santiago de chile
Mensajes: 637
Antigüedad: 18 años, 5 meses
Puntos: 1
como puedo traer don años en esta consulta los mismos campos

estimados tengo un problema en esta consulta muestro 1 año y sus 3 miperos meces Diciembre,Enero,Febrero
Código PHP:
select  case when a.mes=12 then 'Diciembre'else 
    case 
when a.mes=1 then'Enero'else 
    case 
when a.mes=2 then'Febrero' end end end as mes,  
    
sum(a.prima_us_PC) as prima_us_PC,sum(a.prima_us_BU) as prima_us_BU from
    
(select  mes ,sum (prima_us) as prima_us_PC,sum (0) as prima_us_BU 
    from produ_comercial 
    where 
    
(manager 'L'and cia ='000169'   and mes 12 and year=2009 )
    or
    (
manager 'L'and mes in ('1','2')and  year =2010 and cia ='000169' 
    
group by mes
    union
    select mes
,sum (0) as prima_us_PC,sum (prima_us) as prima_us_BU 
    from tbl_budget 
    where 
    
(mes 12 and year=2009)
    or 
    (
mes in ('1','2')and  year =2010)
    
group by mes)
    group by a
.mes 

ahora el problema que tengo es cuando quiero mostrar dos años

Código PHP:
    select  case when a.mes=12 then 'Diciembre'else 
        case 
when a.mes=1 then'Enero'else 
        case 
when a.mes=2 then'Febrero' end end end as mes,  
    
    
sum(a.prima_us_PC) as prima_us_PC,sum(a.prima_us_BU) as prima_us_BU,sum(a.prima_us_PC2) as prima_us_PC2,sum(a.prima_us_BU2) as prima_us_BU from
    
(select  mes ,sum (prima_us) as prima_us_PC,sum (0) as prima_us_BU,sum (prima_us) as prima_us_PC2,sum (0) as prima_us_BU2 
    from produ_comercial 
    where 
    
(manager 'L'and cia ='000169' and mes 12  and year=2008 and year=2009)

    or
    (
manager 'L'and mes in ('1','2')and year=2009 and cia ='000169'and year=2010  )
    
    
group by mes
    union
    select mes
,sum (0) as prima_us_PC,sum (prima_us) as prima_us_BU,sum (0) as prima_us_PC2,sum (prima_us) as prima_us_BU2  
    
    from tbl_budget 
    where 
    
    
(mes 12 and year=2008 and year=2009 )
    or 
    (
mes in ('1','2')and year=2009 and  year=2010)
    
group by mes)
    group by a
.mes 

me muestra la tabla desocupada
  #2 (permalink)  
Antiguo 23/09/2010, 10:46
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: como puedo traer don años en esta consulta los mismos campos

Prueba asi:
Código SQL:
Ver original
  1. SELECT
  2.     CASE mes
  3.         WHEN 12 THEN 'Diciembre'
  4.         WHEN 1 THEN 'Enero'
  5.         WHEN 2 THEN 'Febrero'
  6.     END AS mes,
  7.     SUM(prima_us_PC) AS prima_us_PC, SUM(prima_us_BU) AS prima_us_BU
  8. FROM (
  9.     SELECT mes, SUM(prima_us) AS prima_us_PC, SUM(0) AS prima_us_BU
  10.     FROM produ_comercial
  11.     WHERE manager = 'L' AND cia ='000169'
  12.     AND ((mes = 12 AND YEAR IN (2008,2009)) OR (mes IN (1,2) AND YEAR IN (2009,2010)))
  13.     GROUP BY mes
  14.     UNION
  15.     SELECT mes, SUM(0) AS prima_us_PC, SUM(prima_us) AS prima_us_BU
  16.     FROM tbl_budget
  17.     AND ((mes = 12 AND YEAR IN (2008,2009)) OR (mes IN (1,2) AND YEAR IN (2009,2010)))
  18.     GROUP BY mes
  19. ) a
  20. GROUP BY mes
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #3 (permalink)  
Antiguo 23/09/2010, 11:22
Avatar de a83
a83
 
Fecha de Ingreso: noviembre-2005
Ubicación: Santiago de chile
Mensajes: 637
Antigüedad: 18 años, 5 meses
Puntos: 1
Respuesta: como puedo traer don años en esta consulta los mismos campos

error
Server: Msg 170, Level 15, State 1, Line 4
Line 4: Incorrect syntax near '*'.
Server: Msg 170, Level 15, State 1, Line 7
Line 7: Incorrect syntax near '*'.
Server: Msg 170, Level 15, State 1, Line 13
Line 13: Incorrect syntax near '*'.
  #4 (permalink)  
Antiguo 23/09/2010, 11:46
Avatar de a83
a83
 
Fecha de Ingreso: noviembre-2005
Ubicación: Santiago de chile
Mensajes: 637
Antigüedad: 18 años, 5 meses
Puntos: 1
Respuesta: como puedo traer don años en esta consulta los mismos campos

si de esta forma lo puedo sacar los dos años pero cuando me los muestra en la consulta el me los suma es decir me muestra un solo registro


ej

año 2009
44
22


y tendría que ser


año 2009 año 2010
22 22
11 11


no se si me explico bien
  #5 (permalink)  
Antiguo 23/09/2010, 12:27
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: como puedo traer don años en esta consulta los mismos campos

¿Columna por año?
__________________
MCTS Isaias Islas
  #6 (permalink)  
Antiguo 23/09/2010, 12:28
Avatar de a83
a83
 
Fecha de Ingreso: noviembre-2005
Ubicación: Santiago de chile
Mensajes: 637
Antigüedad: 18 años, 5 meses
Puntos: 1
Respuesta: como puedo traer don años en esta consulta los mismos campos

claro por que me esta agrupando los dos años en una sola columna
  #7 (permalink)  
Antiguo 23/09/2010, 12:31
Avatar de a83
a83
 
Fecha de Ingreso: noviembre-2005
Ubicación: Santiago de chile
Mensajes: 637
Antigüedad: 18 años, 5 meses
Puntos: 1
Respuesta: como puedo traer don años en esta consulta los mismos campos

de esta forma lo tengo
Código PHP:
select  case when a.mes=12 then 'Diciembre'else 
        case 
when a.mes=1 then'Enero'else 
        case 
when a.mes=2 then'Febrero' end end end as mes,  
        
sum(a.prima_us_PC) as prima_us_PC,sum(a.prima_us_BU) as prima_us_BU from
    
(select  mes ,sum (prima_us) as prima_us_PC,sum (0) as prima_us_BU 
    from produ_comercial 
    where 
    
(manager 'L'and cia ='000169'and mes 12 AND year IN (2008,2009))
    or
    (
manager 'L'and mes in ('1','2') and cia ='000169'AND year IN (2009,2010) ) 
    
group by mes
    union
    select mes
,sum (0) as prima_us_PC,sum (prima_us) as prima_us_BU
    from tbl_budget 
    where 
(mes 12 AND year IN (2008,2009))
    or 
    (
mes in ('1','2')AND year IN (2008,2009))
    
group by mes)
    group by a
.mes 
funciona bien pero me muestra los datos agrrupados
  #8 (permalink)  
Antiguo 23/09/2010, 13:24
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: como puedo traer don años en esta consulta los mismos campos

Mi pregunta es: QUIERES UNA COLUMNA POR CADA AÑO?


2000 - 2001 - 2002 - 2003.....etc.
__________________
MCTS Isaias Islas
  #9 (permalink)  
Antiguo 23/09/2010, 13:29
Avatar de a83
a83
 
Fecha de Ingreso: noviembre-2005
Ubicación: Santiago de chile
Mensajes: 637
Antigüedad: 18 años, 5 meses
Puntos: 1
Respuesta: como puedo traer don años en esta consulta los mismos campos

si por cada año
  #10 (permalink)  
Antiguo 23/09/2010, 13:44
Avatar de abel_c_b  
Fecha de Ingreso: junio-2008
Mensajes: 103
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: como puedo traer don años en esta consulta los mismos campos

Cita:
Iniciado por a83 Ver Mensaje
si por cada año
ya utilizaste la función Pivot??
  #11 (permalink)  
Antiguo 23/09/2010, 13:49
Avatar de a83
a83
 
Fecha de Ingreso: noviembre-2005
Ubicación: Santiago de chile
Mensajes: 637
Antigüedad: 18 años, 5 meses
Puntos: 1
Respuesta: como puedo traer don años en esta consulta los mismos campos

la desconocer es función Pivot
  #12 (permalink)  
Antiguo 23/09/2010, 13:50
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: como puedo traer don años en esta consulta los mismos campos

Por fin !!!, vamos por buen camino....... también puedes buscar el tema de REGISTROS A COLUMNAS que ya se trato en este mismo foro.
__________________
MCTS Isaias Islas
  #13 (permalink)  
Antiguo 23/09/2010, 14:19
Avatar de abel_c_b  
Fecha de Ingreso: junio-2008
Mensajes: 103
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: como puedo traer don años en esta consulta los mismos campos

Cita:
Iniciado por a83 Ver Mensaje
la desconocer es función Pivot
Yo no entendí......

De igual forma, busca en google
  #14 (permalink)  
Antiguo 23/09/2010, 14:25
Avatar de a83
a83
 
Fecha de Ingreso: noviembre-2005
Ubicación: Santiago de chile
Mensajes: 637
Antigüedad: 18 años, 5 meses
Puntos: 1
Respuesta: como puedo traer don años en esta consulta los mismos campos

si la busque pero no es la alternativa


crear otro union para que me los muestre por separada sera la solución
  #15 (permalink)  
Antiguo 23/09/2010, 14:34
Avatar de a83
a83
 
Fecha de Ingreso: noviembre-2005
Ubicación: Santiago de chile
Mensajes: 637
Antigüedad: 18 años, 5 meses
Puntos: 1
Respuesta: como puedo traer don años en esta consulta los mismos campos

me lo esta tirando como quiero en columnas distintas pero el resultado lo esta sumando me entrega los años sumandos como resultado

Código PHP:
select  case when a.mes=12 then 'Diciembre'else 
    case 
when a.mes=1 then'Enero'else 
    case 
when a.mes=2 then'Febrero' end end end as mes,  
    
sum(a.prima_us_PC) as prima_us_PC,sum(a.prima_us_BU) as prima_us_BU,sum(a.prima_us_PC) as prima_us_PC1,sum(a.prima_us_BU) as prima_us_BU1 from

    
(select  mes ,sum (prima_us) as prima_us_PC,sum (0) as prima_us_BU 
    
    from produ_comercial 
    where 
    
(manager 'L'and cia ='000169'and mes 12 AND year IN (2008))
    or
    (
manager 'L'and mes in ('1','2') and cia ='000169'AND year IN (2009) ) 
    
group by mes
    
    union
    
    
(select  mes ,sum (prima_us) as prima_us_PC1,sum (0) as prima_us_BU1 
    from produ_comercial 
    where 
    
(manager 'L'and cia ='000169'and mes 12 AND year IN (2009))
    or
    (
manager 'L'and mes in ('1','2') and cia ='000169'AND year IN (2010) ) 
    
group by mes))
    group by a
.mes 
  #16 (permalink)  
Antiguo 23/09/2010, 15:19
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: como puedo traer don años en esta consulta los mismos campos

Prueba asi:
Código SQL:
Ver original
  1. SELECT YEAR,
  2.     CASE mes
  3.         WHEN 12 THEN 'Diciembre'
  4.         WHEN 1 THEN 'Enero'
  5.         WHEN 2 THEN 'Febrero'
  6.     END AS mes,
  7.     SUM(prima_us_PC) AS prima_us_PC, SUM(prima_us_BU) AS prima_us_BU
  8. FROM (
  9.     SELECT YEAR,mes, SUM(prima_us) AS prima_us_PC, SUM(0) AS prima_us_BU
  10.     FROM produ_comercial
  11.     WHERE manager = 'L' AND cia ='000169'
  12.     AND ((mes = 12 AND YEAR IN (2008,2009)) OR (mes IN (1,2) AND YEAR IN (2009,2010)))
  13.     GROUP BY YEAR,mes
  14.     UNION
  15.     SELECT YEAR,mes, SUM(0), SUM(prima_us)
  16.     FROM tbl_budget
  17.     AND ((mes = 12 AND YEAR IN (2008,2009)) OR (mes IN (1,2) AND YEAR IN (2009,2010)))
  18.     GROUP BY YEAR,mes
  19. ) a
  20. GROUP BY YEAR,mes
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.

Etiquetas: 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 09:21.