不要添加额外的天数

时间:2018-03-02 11:37:38

标签: mysql sql

好!我有这个功能:

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_libresdias_disfrutados。我错过了什么?

例如:用户有24 dias_disponibles并要求10 dias_disfrutados。结果将是24-10 = 14 dias_libres

如果用户请求1 dias_extra,则必须将此日添加到dias_disponibles

24 + 1 = 25

在这种情况下,您还必须修改dias_libresdias_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

后者不

0 个答案:

没有答案