好!我有这个功能:
SELECT u.name, (u.dias_disponibles + COALESCE(dias_extra,0)) as dias_disponibles,
(u.dias_disponibles - COALESCE(dias_disfrutados,0)) AS dias_libres,
COALESCE(dias_disfrutados,0) as dias_disfrutados
FROM (
select u.name, u.dias_disponibles
, sum( case when s.fk_motivo = 1
OR s.fk_motivo = 3)
then dias_disfrutados else 0 end ) as dias_disfrutados
, sum( case when FK_MOTIVO = 4
then dias_disfrutados else 0 end ) as dias_baja
, sum( case when FK_MOTIVO = 2
then dias_disfrutados else 0 end ) as dias_extra
FROM sec_users u
left join solicitud s on s.fk_empleado = u.pk_user
group by u.name ) u
我有两张桌子:
sec_users:
pk_user name dias_disponibles
======== ===== ==================
1 Usuario 24
solicitud:
pk_solicitud fk_empleado dias_disfrutados motivo
============ ============ ================= ==========
1 1 10 1
好吧,这个函数会创建一个小报告,我的问题是,正如您在开头dias_extra
看到的那样,它加起来为dias_disponibles
,这样做很好。问题是它不会更改dias_libres
或dias_disfrutados
。我错过了什么?
例如:用户有24 dias_disponibles
并要求10 dias_disfrutados
。结果将是24-10 = 14 dias_libres
。
如果用户请求1 dias_extra
,则必须将此日添加到dias_disponibles
:
24 + 1 = 25
在这种情况下,您还必须修改dias_libres
和dias_disfrutados
,但事实并非如此。
当用户请求10 dias_disfrutados
:
name dias_disponibles dias_libres dias_disfrutados
====== ================ ============ ================
Usuario 24 14 10
当用户请求dias_extra
name dias_disponibles dias_libres dias_disfrutados
====== ================ ============ ================
Usuario 25 15 10
后者不