SQL - ayuda con funciones en sql

 
Vista:

ayuda con funciones en sql

Publicado por iliana (5 intervenciones) el 08/11/2006 15:28:01
hola soy nueva en el uso de sql server y quiero saber si alguien puede ayudarme diciendome como hago funciones en sql, necesito una funcion que me haga consultas registro por registro ya que los ajustes que tengo que hacer a una consulta requieren que analice registro por registro y ademas como puedo llamar a esa funcion en php
ojala puedan ayudarme
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:ayuda con funciones en sql

Publicado por Christian (77 intervenciones) el 08/11/2006 17:07:18
utiliza cursores en un procedimiento almacenado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda con funciones en sql

Publicado por Isaías (5072 intervenciones) el 08/11/2006 17:30:30
Bueno, difiero en la opinion de usar CURSORES, ya que al ser creados en la memoria del servidor, degradan su tiempo de respuesta, afectando a todos los usuarios conectados.

¿Porque mejor no nos dices que deseas hacer?

SQL Server, es un excelente motor para manejo de grandes cantidades de datos, pero el recorrer, registro x registro, no sirve o no fue preparada para esta operacion.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda con funciones en sql

Publicado por iliana (5 intervenciones) el 08/11/2006 17:35:51
ayer en el foro vi que una chica tiene el mismo problema que yo una vez creada la consulta requiero que a las horas registradas de cada trabajador se le resten tres pero solamente a las que registre del primer dia es decir todos los trabajadores registran las horas trabajadas diariamente pero le tengo que restar tres solamente a las que regitro la primer vez no a todos los registros
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:ayuda con funciones en sql

Publicado por Liliana (426 intervenciones) el 09/11/2006 15:43:30
Hola Iliana,
Sería más útil que nos dijeras con ejemplos lo que necesitás, incluyendo el diseño de la tabla.
Si es mostrar el detalle de cada día trabajado, restando tres horas en el primer día de trabajo solamente:

SELECT t1.trabajador,
t1.fecha,
horas = CASE WHEN t1.fecha = ( select min(t2.fecha)
from tabla t2
where t2.trabajador = t1.trabajador)
THEN horas - 3 ELSE horas END
FROM tabla t1
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda con funciones en sql

Publicado por iliana (5 intervenciones) el 09/11/2006 18:51:48
ok el query de seleccion para obtener mi reporte es este
select u.HRORACLENUMBER as hrnum, u.lastname || ' ' || u.firstname as name,
v.VOUCHERDATE as voucherdate, v.USEDHOURS as usedhours,
REPLACE(REPLACE(v.DESCRIPTION, CHR(13), ' '),CHR(10), ' ') as description,
p.PROJECT as project, a.CATALOGNAME as area
FROM
general.vouchers v, general.users u, general.projects p, general.areas a
WHERE
v.USERID = u.USERID
AND v.PROJECTID = p.PROJECTID
AND v.AREAID = a.CATALOGID
AND p.AREAID = a.CATALOGID
$Dates
ORDER BY
v.AREAID, u.HRORACLENUMBER, v.VOUCHERDATE

y la tabla que resulta algo asi:
HRNUM NAME VOUCHERDATE HOURS DESCRIPTION PROJECT
204027263 Ricardo 2003-11-03 9 ODM Spec AECS-00158-013-001 204027263 Ricardo 2003-11-04 5 OLS spec AECS-00158-014-001
204027263 Ricardo 2003-11-05 9 final AECS-00158-014-001

204027270 Esther 2003-11-03 9 descrip. AECS-00170-031-006
204027270 Esther 2003-11-05 5 dfdsjej project
204027270 Esther 2003-11-06 3 sdfastdgdfg dfgdfgdfgdf
204027270 Esther 2003-11-07 1 dfgdfgdfg dfghjdkhfgj
lo que quiero es que al agregar la columna ajuste me muestre las used hours -3 pero solo del primer registro de cada uno y que si el trabajador registra en el primero un valor menor a 3 hrs que se siga al sig. registro y se lo reste a ese
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:ayuda con funciones en sql

Publicado por Liliana (426 intervenciones) el 09/11/2006 19:27:53
Iliana,
Como no tengo estructuras de tablas ni datos de prueba, te dejo la verificación para vos.
Sobre la idea del post anterior:

...
a.CATALOGNAME as area,
Ajuste = CASE WHEN v.VOUCHERDATE = ( select min(v2.VOUCHERDATE)
from general.vouchers v2
where v.USERID = v2.USERID AND v.USEDHOURS >= 3)
THEN v.USEDHOURS - 3 ELSE v.USEDHOURS END

FROM ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar