如何计算当月的员工读数

时间:2012-10-26 07:27:54

标签: sql oracle date view count

我正在尝试研究如何为我的数据库创建此视图

每个仪表在当月读取的仪表数 读者(这个观点应该能够在任何时候使用而不必 改变以适应日期)。

我遇到的主要问题是计算员工在一个月内读取电表的次数。我正在使用oracle和sql developer。

这些是我的表格:

a2_METERREADER

 - EMPLOYEEID
 - FIRSTNAME
 - LASTNAME

a2_READING

 - READINGID
 - METERID
 - EMPLOYEEID
 - BILLNUMBER
 - READING
 - DATERECORD

a2_Watermeter

 - METERID
 - ADDRESS
 - SUBURB
 - POSTCODE
 - STATUS
 - CUSTOMERID
 - REPLACE
 - INSTALLDATE

2 个答案:

答案 0 :(得分:2)

您需要加入抄表员并阅读表格并计算按行数分组的行数。

这些方面的东西:

SELECT reader.EMPLOYEEID, COUNT(reading.READINGID)
FROM a2_METERREADER reader, a2_READING reading
WHERE reader.EMPLOYEEID = reading.EMPLOYEEID
AND YEAR(reading.DATERECORD) = YEAR(SYSDATE)
AND MONTH(reading.DATERECORD) = MONTH(SYSDATE)
GROUP BY reader.EMPLOYEEID

答案 1 :(得分:2)

如果您的日期记录是DATE,那么要从Windows访问当前月份,您可以执行此操作。

SELECT EMPLOYEEID, COUNT(*)
FROM a2_READING
WHERE TO_CHAR(DATERECORD, 'MM/YYYY') = TO_CHAR(SYSDATE, 'MM/YYYY')
GROUP BY EMPLOYEEID

通过这种方式,您可以消除DATERECORD的天数(仅保留数月和年份),并且必须与再次转换为保留月份和年份的SYSDATE(当前日期)相同。

如果您只需要ID

,则无需加入METERREADER表