如果您发布的示例是您正在进行的工作版本 - 在担心获取星期几之前,您应该考虑正确获取查询的基础知识
您正在选择 e.projectid 和 u.userid 但您的查询中没有任何名为 e 或 u 的表 - 看起来您想将它们别名为 e 和 u?
您的查询的 where 子句也在寻找不存在的表 e
在这种情况下,你应该改变
from table1
join table2
on table1.a= table2.a
至
from table1 e -- select from table1 using alias e
join table2 u -- join table2 using alias u
on ( e.a = u.a ) -- joining on column a from table1 (e) = a from table2 (u)
一旦您将 on 部分中的 a 替换为要加入的列名,在您删除最后一列“,??”后,它可能会很好地运行。从选择 - 也许是这样的
select
count (e.projectid) PROJECTS,
count (u.userid) USERS
from table1 e
join table2 u
on ( e.a = u.a )
where e.FILTERING_COLUMN = '1'
and e.eventdatetime >= sysdate-30
请注意,由于 sysdate 是服务器上的当前时间(取决于本地化和会话设置),您可以使用大于 sysdate-30 而不是介于两者之间的时间
分组的基本规则是,要选择一个列,您需要按它进行分组或使用聚合函数,例如 COUNT()
所以你可能会想要类似的东西
select
count (e.projectid) PROJECTS,
count (u.userid) USERS,
to_char(e.eventdatetime,'MM') MONTH
from table1 e
join table2 u
on ( e.a = u.a )
where e.FILTERING_COLUMN = '1'
and e.eventdatetime >= sysdate-30
group by e.eventdatetime
虽然这不是最优化的方法,但如果您发布问题中涉及的模式会更容易