我想显示当前月份员工表中的每日工资员工详细信息。
对于Eg:Month将显示为Current Date-1。 (如果当前日期是2014年6月18日,那么该月的数据将显示在2014年6月1日至2014年6月17日。 同样,如果当前日期是01-JUN-2014,则月数据将显示从2014年5月1日至2014年5月31日)
请帮我看看如何编写上述要求的查询。
提前致谢
答案 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')