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

[SOLUCIONADO] Error intentando calcular una columna

Estas en el tema de Error intentando calcular una columna en el foro de SQL Server en Foros del Web. Buenas La pregunta me parece super absurda y seguro que es de respuesta super fácil, pero llevo días buscando y no doy con la solución: ...
  #1 (permalink)  
Antiguo 15/12/2014, 10:23
 
Fecha de Ingreso: diciembre-2014
Mensajes: 111
Antigüedad: 10 años
Puntos: 9
Error intentando calcular una columna

Buenas

La pregunta me parece super absurda y seguro que es de respuesta super fácil, pero llevo días buscando y no doy con la solución:

Estoy haciendo un "select" en el que tengo dos columnas, una que calculo en base a una serie de datos que obtengo de la base de datos con varios "case" anidados y otra que es la misma pero multiplicando su valor por 5.

Me gustaría multiplicar el valor de la columna que ya tengo calculada por 5 para cada fila y así ahorrarme repetir el código entero con los valores ya multiplicados por 5 y esperaba que fuera algo sencillo tipo
Código:
5*col1 AS Col2
pero no me reconoce col1, ¿Cómo puedo hacer eso?
  #2 (permalink)  
Antiguo 15/12/2014, 10:39
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 4 meses
Puntos: 774
Respuesta: Error intentando calcular una columna

sencillo, tienes tu query tipo..


Código SQL:
Ver original
  1. SELECT CASE WHEN........END AS col1 FROM tabla

pues nada mas haces

Código SQL:
Ver original
  1. SELECT col1, col1*5 AS col2 FROM(
  2. SELECT CASE WHEN........END AS col1 FROM tabla
  3. ) t1

y listo :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 16/12/2014, 02:15
 
Fecha de Ingreso: diciembre-2014
Mensajes: 111
Antigüedad: 10 años
Puntos: 9
Respuesta: Error intentando calcular una columna

Gracias Libras, funciona genial, pero al ponerlo con el resto de datos me da un error de sintaxis cerca del WHERE, mejor te dejo el código:

Código SQL:
Ver original
  1. SELECT
  2. Datos.AnioContrato,
  3. Datos.FchInicio,
  4. Datos.FchFin,
  5. Datos.FchBaja,
  6. t2.fecha,
  7. t2.Prorroga,
  8. NH,
  9. 5*NH AS Importe
  10. FROM (SELECT CASE Dato.AnioContrato
  11.     WHEN '0' THEN
  12.     CASE MONTH(Dato.FchInicio)
  13.         WHEN '2' THEN
  14.         CASE DAY(Dato.FchInicio)
  15.             WHEN '1' THEN 43
  16.                         ....
  17.             WHEN '31' THEN 2
  18.         END
  19.         ELSE 43    
  20.     END
  21.     ELSE
  22.     CASE DAY(Dato.FchInicio)
  23.         WHEN '1' THEN 26
  24.                 .....
  25.         WHEN '31' THEN 1
  26.     END
  27. END AS NH FROM OfcContratosFormacion_DatosCtto AS Dato) t1 INNER JOIN
  28. OfcContratosFormacion_DatosCtto AS Datos
  29. RIGHT JOIN (
  30.     SELECT
  31.     MAX(FchInicio) AS fecha,
  32.     COUNT(FchInicio)-1 AS Prorroga,
  33.     IDContratoFormacion
  34.  
  35.     FROM OfcContratosFormacion_DatosCtto
  36.  
  37.     GROUP BY IDContratoFormacion) AS t2
  38.  
  39.     ON (Datos.IDContratoFormacion=t2.IDContratoFormacion AND Datos.FchInicio=t2.fecha)
  40.    
  41. WHERE Datos.FchInicio IS NOT NULL

¿Qué puede ser?

Última edición por gnzsoloyo; 17/12/2014 a las 14:20
  #4 (permalink)  
Antiguo 16/12/2014, 08:24
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 4 meses
Puntos: 774
Respuesta: Error intentando calcular una columna

que te faltan los campos por dode haces el amarre entre tus joins,

Código SQL:
Ver original
  1. SELECT
  2. Datos.AnioContrato,
  3. Datos.FchInicio,
  4. Datos.FchFin,
  5. Datos.FchBaja,
  6. t2.fecha,
  7. t2.Prorroga,
  8. NH,
  9. 5*NH AS Importe
  10. FROM (SELECT CASE Dato.AnioContrato
  11.     WHEN '0' THEN
  12.     CASE MONTH(Dato.FchInicio)
  13.         WHEN '2' THEN
  14.         CASE DAY(Dato.FchInicio)
  15.             WHEN '1' THEN 43
  16.                         ....
  17.             WHEN '31' THEN 2
  18.         END
  19.         ELSE 43    
  20.     END
  21.     ELSE
  22.     CASE DAY(Dato.FchInicio)
  23.         WHEN '1' THEN 26
  24.                 .....
  25.         WHEN '31' THEN 1
  26.     END
  27. END AS NH FROM OfcContratosFormacion_DatosCtto AS Dato) t1 INNER JOIN
  28. OfcContratosFormacion_DatosCtto AS Datos ON (t1.id=datos.id)
  29. RIGHT JOIN (
  30.     SELECT
  31.     MAX(FchInicio) AS fecha,
  32.     COUNT(FchInicio)-1 AS Prorroga,
  33.     IDContratoFormacion
  34.  
  35.     FROM OfcContratosFormacion_DatosCtto
  36.  
  37.     GROUP BY IDContratoFormacion) AS t2
  38.  
  39.     ON (Datos.IDContratoFormacion=t2.IDContratoFormacion AND Datos.FchInicio=t2.fecha)
  40.    
  41. WHERE Datos.FchInicio IS NOT NULL
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 17/12/2014, 02:28
 
Fecha de Ingreso: diciembre-2014
Mensajes: 111
Antigüedad: 10 años
Puntos: 9
Respuesta: Error intentando calcular una columna

¡Dios!, me ha costado un huevo, pero creo que ya se Kung Fu, digo... se manejarme con Sql, es fácil, pero hasta que no lo ves...

Muchas gracias Libras, sin tu sabiduría seguiría mirando la pantalla como las vacas al tren.
  #6 (permalink)  
Antiguo 17/12/2014, 14:10
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 5 meses
Puntos: 180
Respuesta: Error intentando calcular una columna

¿Cómo la vaca al tren?, o sea como EPN al tren?, jajajaja
__________________
MCTS Isaias Islas

Etiquetas: calcular, columna, select
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 03:33.