Programación General > Bases de Datos
Decisiones Tipo If Else Resultado
UserCode:
Hola
Tengo unas dudas sobre una SQL que debe hacer algo en un pequeño programa que lleva un control de horario laboral, en esto tengo algo que se llama "Clausula 26" lo cual establece como máximo de horas laboradas de un empleado a la semana, de 44 horas, por ejemplo, una idea de esa supuesta clausula la explico con un codigo:
--- Citar ---If TotalLb > 44 Then
R = TotalLb - 44
Else
R = 0
End If
--- Fin de la cita ---
Pero ¿cómo se hace esto en una sentencia SQL?
Este es la SQL con la que estoy trabajando:
--- Citar ---Select Sum(AM_lb) AS AM1, Sum(PM_lb) AS PM1, Sum(Total_lb) As Total1, Sum(Clausula) As Clau26,
Sum(AM_ext_d) As AM2, Sum(PM_ext_d) As PM2, Sum(Total_ext_d) As Total2,
Sum(AM_ext_n) As AM3, Sum(PM_ext_n) As PM3, Sum(Total_ext_n) As Total3
From chl_tb
Where NumEmp=30915
And Fecha Between #08/05/2007# And #20/05/2007#
--- Fin de la cita ---
Pero Sum(Clausula) As Clau26 no me sirve así, la puse de relleno (mientras tanto de esa forma), ese campo es en este caso R.
He probado algo como:
--- Citar ---Select Sum(AM_lb) AS AM1, Sum(PM_lb) AS PM1, Sum(Total_lb) As Total1,
(Select (Sum(Total_lb)-44) As TotalLb From chl_tb Where TotalLb > 44) As Clau26,
Sum(AM_ext_d) As AM2, Sum(PM_ext_d) As PM2, Sum(Total_ext_d) As Total2,
Sum(AM_ext_n) As AM3, Sum(PM_ext_n) As PM3, Sum(Total_ext_n) As Total3
From chl_tb
Where NumEmp=30915
And Fecha Between #08/05/2007# And #20/05/2007#
--- Fin de la cita ---
Pero eso no funciona, en resumen de todo esto, la idea que me da vueltas es la cuestion de que esta SQL (que es para un MSFlexGrid2) tenga dentro otra SQL como la que está entre ( ). Pero me ha costado ver como formarla para que con respecto a ese campo, haga lo del codigo VB pero en SQL.
Alguien sabe? :unsure:
ElNapster:
Y si utilizas un CASE ? no sera mas facil o en este caso no te serviria ?
:rolleyes:
UserCode:
Es que la BD está en Access, eso podría servirme en SQL Server por ejemplo, esto parece que se unirá luego a otro programa que trabaja con archivos planos, yo lo hice así con esta Bd y pues como que me parece que voy a tener que recurrir a unas marañas y actos de magia que ya estoy determinando para salir de este muerto :lol:
ElNapster:
<_< pero si en los ejemplo que pusiste estas utilizando clausulas SQL ?
--- Citar ---Select Sum(AM_lb) AS AM1, Sum(PM_lb) AS PM1, Sum(Total_lb) As Total1, Sum(Clausula) As Clau26,
Sum(AM_ext_d) As AM2, Sum(PM_ext_d) As PM2, Sum(Total_ext_d) As Total2,
Sum(AM_ext_n) As AM3, Sum(PM_ext_n) As PM3, Sum(Total_ext_n) As Total3
From chl_tb
Where NumEmp=30915
And Fecha Between #08/05/2007# And #20/05/2007#
--- Fin de la cita ---
--- Citar ---Select Sum(AM_lb) AS AM1, Sum(PM_lb) AS PM1, Sum(Total_lb) As Total1,
(Select (Sum(Total_lb)-44) As TotalLb From chl_tb Where TotalLb > 44) As Clau26,
Sum(AM_ext_d) As AM2, Sum(PM_ext_d) As PM2, Sum(Total_ext_d) As Total2,
Sum(AM_ext_n) As AM3, Sum(PM_ext_n) As PM3, Sum(Total_ext_n) As Total3
From chl_tb
Where NumEmp=30915
And Fecha Between #08/05/2007# And #20/05/2007#
--- Fin de la cita ---
<_<
UserCode:
Yo decia con el Case lo llegue a poner y ZAS! error, el resto del Query si rula bien en Access, cualquier cosa rara en las SQLs puede ser debido a posibles desesperos por el tiempo en que le he estado dando vueltas a esto, lo cual ha sido un par de días :comp:
Navegación
[#] Página Siguiente
Ir a la versión completa