0

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

每个抄表员在当月读取的抄表数(此视图应该能够随时使用,而无需更改以适应日期)。

我遇到的主要麻烦是计算员工在一个月内读了多少次电表。我正在使用 oracle 和 sql 开发人员。

这些是我的表:

a2_METERREADER

 - EMPLOYEEID
 - FIRSTNAME
 - LASTNAME

a2_READING

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

a2_Watermeter

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

2 回答 2

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
于 2012-10-26T07:38:47.490 回答
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 表

于 2012-10-26T07:56:58.080 回答