Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于ORACLE SQL查询_Sql_Oracle - Fatal编程技术网

关于ORACLE SQL查询

关于ORACLE SQL查询,sql,oracle,Sql,Oracle,我有三个表,我合并了如下表。我想以平均9分的成绩打印出这个名字作为标题,并将年份减少10分 标题 年 指向 名称 A. 1999 9 K A. 1999 9 L C 1997 7. M 如果表连接正确,则GROUPBY子句存在问题。如果在Select子句中使用聚合函数,如(AVG、SUM、COUNT),则Select子句中包含的所有其他列必须添加到group by子句中。这应该起作用: SELECT k.TITLE, k.YEAR, AVG(POINT), m.NAME FROM Table1

我有三个表,我合并了如下表。我想以平均9分的成绩打印出这个名字作为标题,并将年份减少10分

标题 年 指向 名称 A. 1999 9 K A. 1999 9 L C 1997 7. M
如果表连接正确,则GROUPBY子句存在问题。如果在Select子句中使用聚合函数,如(AVG、SUM、COUNT),则Select子句中包含的所有其他列必须添加到group by子句中。这应该起作用:

SELECT k.TITLE, k.YEAR, AVG(POINT), m.NAME 
FROM Table1 k JOIN Table2 l ON (k.TITLE=l.TITLE) JOIN Table3 m ON (l.YEAR=m.YEAR) 
GROUP BY (k.TITLE, k.YEAR,m.NAME);
编辑:

如果要从Select子句中减去年数,可以使用如下添加月数函数:

SELECT k.TITLE, ADD_MONTHS( TRUNC(k.YEAR), -12*10 ), AVG(POINT), m.NAME 
FROM Table1 k JOIN Table2 l ON (k.TITLE=l.TITLE) JOIN Table3 m ON (l.YEAR=m.YEAR) 
GROUP BY (k.TITLE, ADD_MONTHS( TRUNC(k.YEAR), -12*10 ),m.NAME);
您还可以向查询中添加WHERE子句并指定一些条件,WHERE子句应添加在group by子句之前和FROM子句之后

基本上,您可以将任何日期数据类型列替换为
ADD_MONTHS(TRUNC(yourcolumn),-12*10)
将(yourcolumn)替换为要从中减去年份的列


祝你好运。

你说它失败了,为什么失败了?它是否导致错误或未返回所需的结果或其他?它返回了错误。您的
分组依据
列与
选择
列不一致。除此之外,我也帮不了你,因为你没有想要的结果,我也无法遵循逻辑。谢谢你的提问。如何编写从日期减去10年的查询?这将减去10年,您可以将数字10更改为您想要的任何数字
选择SYSDATE,从DUAL添加\u个月(TRUNC(SYSDATE),-12*10)
如何将此添加到上面的查询中?我在答案中添加了减法。