【问题标题】:Why I am getting error "SQL command not properly ended"?为什么我收到错误“SQL 命令未正确结束”?
【发布时间】:2021-06-17 17:58:38
【问题描述】:

这是我尝试在 oracle live SQL 中运行的 SQL 查询:

SELECT yearly,branch,SUM(package_offered) AS "PACKAGE_OFFERED"
FROM PLACEMENT_FACTS AS PAF ,STUDENT AS ST, TIME_PERIOD AS TP
WHERE PAF.STUDENT_ID = ST.STUDENT_ID AND PAF.TIME_PERIOD_ID = TP.TIME_PERIOD_ID AND BRANCH = 'MECH'
GROUP BY yearly;

【问题讨论】:

  • 你为什么不使用JOIN?用您正在使用的数据库标记您的问题。

标签: sql


【解决方案1】:

编写这个查询的正确方法是这样的:

SELECT yearly, branch, SUM(package_offered) AS PACKAGE_OFFERED
FROM PLACEMENT_FACTS PAF JOIN
     STUDENT ST
     ON PAF.STUDENT_ID = ST.STUDENT_ID JOIN
     TIME_PERIOD TP
     ON PAF.TIME_PERIOD_ID = TP.TIME_PERIOD_ID
WHERE BRANCH = 'MECH'
GROUP BY yearly, branch;

您应该限定yearlybranch,以便清楚它们来自哪些表。

注意事项:

  • 从不FROM 子句中使用逗号。 始终使用适当的显式、标准、可读的JOIN 语法。
  • 您不需要转义列别名。
  • 您应该限定所有列名。
  • SELECT 中的所有未聚合列都应在 GROUP BY 中。

【讨论】:

  • 谢谢,它有效。我需要了解 GROUP BY 条款的工作原理。
猜你喜欢
  • 2017-03-12
  • 2017-05-13
  • 1970-01-01
  • 2021-09-05
  • 2013-06-21
  • 1970-01-01
  • 2012-02-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多