显示当月的数据

时间:2014-06-18 09:14:44

标签: sql oracle

我想显示当前月份员工表中的每日工资员工详细信息。

对于Eg:Month将显示为Current Date-1。 (如果当前日期是2014年6月18日,那么该月的数据将显示在2014年6月1日至2014年6月17日。 同样,如果当前日期是01-JUN-2014,则月数据将显示从2014年5月1日至2014年5月31日)

请帮我看看如何编写上述要求的查询。

提前致谢

1 个答案:

答案 0 :(得分:1)

我想你应该有类似的东西:

表EMPLOYEE:

| EMP_ID | NAME | ...

表EMPLOYEE_DETAIL:

| WAGE_DATE | EMP_ID | AMOUNT | ...

所以这应该是:

select D.EMP_ID, E.NAME, trunc(D.WAGE_DATE), sum(AMOUNT) WAGE_AMOUNT
from EMPLOYEE_DETAIL D
inner join EMPLOYEE E on (E.EMP_ID = D.EMP_ID)
where trunc(D.WAGE_DATE, 'MON') = trunc(sysdate, 'MON') -- Only on current month
group by D.EMP_ID, E.NAME, trunc(D.WAGE_DATE)

编辑:如果您想要上个月的数据,可以执行以下操作:

where trunc(D.WAGE_DATE, 'MON') = trunc(add_months(sysdate, -1), 'MON')

代替。如果您只想在当月的第一天获取数据,请执行以下操作:

where trunc(D.WAGE_DATE, 'MON') = case when trunc(sysdate) = trunc(sysdate, 'MON')
                                       then trunc(add_months(sysdate, -1), 'MON')
                                       else trunc(sysdate, 'MON')