我正在尝试研究如何为我的数据库创建此视图
每个仪表在当月读取的仪表数 读者(这个观点应该能够在任何时候使用而不必 改变以适应日期)。
我遇到的主要问题是计算员工在一个月内读取电表的次数。我正在使用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
答案 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表