使用GROUPBY子句的SQL联接查询? 输出:

使用GROUPBY子句的SQL联接查询? 输出:,sql,oracle11g,Sql,Oracle11g,这个代码怎么了? 我想要所有的cloumn(e.employee\u id,e.last\u name,e.salary,e.department\u id,d.department\u name)和d.department\u id,d.department\u name)是否可能?您只能按子句选择分组中的列。作为按子句分组的规则,您应该包括不属于聚合的所有列。在这种情况下,您需要包括GROUP BY子句中的所有列 SQL> SELECT e.employee_id, e.last_na

这个代码怎么了?
我想要所有的cloumn(e.employee\u id,e.last\u name,e.salary,e.department\u id,d.department\u name)和d.department\u id,d.department\u name)是否可能?

您只能按子句选择分组中的列。

作为按子句分组的规则,您应该包括不属于聚合的所有列。在这种情况下,您需要包括GROUP BY子句中的所有列

SQL> SELECT e.employee_id, e.last_name, e.salary, e.department_id, d.department_name
  2  FROM employees e, departments d
  3  WHERE e.department_id = d.department_id
  4  GROUP BY d.department_id, d.department_name;
SELECT e.employee_id, e.last_name, e.salary, e.department_id, d.department_name
       *
ERROR at line 1:
ORA-00979: not a GROUP BY expression


请参阅此代码。这将是工作

SELECT e.employee_id, e.last_name, SUM(e.salary), e.department_id, d.department_name
FROM employees e, departments d
WHERE e.department_id = d.department_id
GROUP BY e.employee_id, e.last_name, e.department_id, d.department_name;


你得到了什么输出?您的预期输出是什么?请选择e.员工id、e.姓氏、e.薪资、e.部门id、d.部门名称*第1行错误:ORA-00979:不是按表达式分组我希望所有列都作为输出并仅按分组(d.部门id、d.部门名称)。。。可能吗?不可能在ANSI-92 SQL标准中(20多年前),旧样式的逗号分隔表列表样式被正确的ANSI
JOIN
语法所取代,不鼓励使用它
SELECT e.employee_id, e.last_name, e.salary, e.department_id, d.department_name
FROM employees e, departments d
WHERE e.department_id = d.department_id
GROUP BY e.employee_id, e.last_name, e.salary, e.department_id, d.department_name;
SELECT e.employee_id, e.last_name, SUM(e.salary), e.department_id, d.department_name
FROM employees e, departments d
WHERE e.department_id = d.department_id
GROUP BY e.employee_id, e.last_name, e.department_id, d.department_name;
SELECT e.id, e.name, e.salary, e.did, d.dname
FROM [dbo].[Table_1] e join [dbo].[Table_2] d
on e.did = d.did
GROUP BY e.id, e.name, e.salary, e.did, d.dname;
SELECT e.id, e.name, e.salary, e.did, d.dname
FROM [dbo].[Table_1] e , [dbo].[Table_2] d
WHERE  e.did = d.did
GROUP BY e.id, e.name, e.salary, e.did, d.dname;