SELECT
DEPTMST.DEPTID,
DEPTMST.DEPTNAME,
DEPTMST.CREATEDT,
COUNT(USRMST.UID)
FROM DEPTMASTER DEPTMST
INNER JOIN USERMASTER USRMST ON USRMST.DEPTID=DEPTMST.DEPTID
WHERE DEPTMST.CUSTID=1000 AND DEPTMST.STATUS='ACT
我尝试了几种组合,但我一直收到错误
列'DEPTMASTER.DeptID'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中
我还添加了分组,但它不起作用
答案 0 :(得分:1)
你错过了小组
SELECT DEPTMST.DEPTID,
DEPTMST.DEPTNAME,
DEPTMST.CREATEDT,
COUNT(USRMST.UID)
FROM DEPTMASTER DEPTMST
INNER JOIN USERMASTER USRMST ON USRMST.DEPTID=DEPTMST.DEPTID
WHERE DEPTMST.CUSTID=1000 AND DEPTMST.STATUS='ACT
group by DEPTMST.DEPTID,
DEPTMST.DEPTNAME,
DEPTMST.CREATEDT
答案 1 :(得分:1)
使用类似的计数,您需要对所选列进行分组,
即
SELECT
DEPTMST.DEPTID,
DEPTMST.DEPTNAME,
DEPTMST.CREATEDT,
COUNT(USRMST.UID)
FROM DEPTMASTER DEPTMST
INNER JOIN USERMASTER USRMST ON USRMST.DEPTID=DEPTMST.DEPTID
WHERE DEPTMST.CUSTID=1000 AND DEPTMST.STATUS='ACT'
GROUP BY DEPTMST.DEPTID,
DEPTMST.DEPTNAME,
DEPTMST.CREATEDT
答案 2 :(得分:0)
所有聚合函数(如平均,计数,求和)都需要与按功能分组一起使用。如果您不使用group by子句,则表示您正在对表的所有行执行该函数。
例如
Select count(*) from table;
这将返回表中所有行的计数。
Select count(*) from table group by name
这将首先根据名称对表格数据进行分组,然后返回每个组的计数。
因此,在您的情况下,如果您想要USRMST.UID的计数,请将其分组到选择列表中的所有其他列。