SQL组问题
我有一个查询,它显示了ORA-00979:非GROUP BY表达式错误 我不是sql专业人士,所以你能给我一个提示吗SQL组问题,sql,oracle,ora-00979,Sql,Oracle,Ora 00979,我有一个查询,它显示了ORA-00979:非GROUP BY表达式错误 我不是sql专业人士,所以你能给我一个提示吗 SELECT * FROM (SELECT a.*, ROWNUM r___ FROM (SELECT DISTINCT "SMTAPP"."XF_MASTER"."ID" AS "XfMasterEntityId", "SMTAPP"."XP_MASTER_DETAIL"."WIFENAME
SELECT *
FROM (SELECT a.*, ROWNUM r___
FROM (SELECT DISTINCT "SMTAPP"."XF_MASTER"."ID" AS "XfMasterEntityId",
"SMTAPP"."XP_MASTER_DETAIL"."WIFENAME" AS "XpMasterDetailEntityWifename",
"SMTAPP"."XP_MASTER_DETAIL"."COUNT" AS "XpMasterDetailEntityCount",
MAX ("SMTAPP"."XP_MASTER_DETAIL"."COUNT") AS "XpMasterDetailEntityCountMax"
FROM ("SMTAPP"."XF_MASTER" LEFT JOIN "SMTAPP"."XP_MASTER_DETAIL"
ON "SMTAPP"."XF_MASTER"."ID" = "SMTAPP"."XP_MASTER_DETAIL"."XF_MASTER_ID")
GROUP BY "SMTAPP"."XP_MASTER_DETAIL"."COUNT"
ORDER BY "SMTAPP"."XF_MASTER"."ID" ASC) a
WHERE ROWNUM < '11')
WHERE r___ >= '1'
尝试将SELECT中的其他列添加到GROUP BY:ID和WIFENAME尝试将SELECT中的其他列添加到GROUP BY:ID和WIFENAME使用GROUP BY时,必须使用聚合函数聚合选择的所有列,或者将它们添加到GROUP BY子句中。否则,该列将有一个项目列表,而不是单个值 因此,请尝试使用以下方法替换现有组:
GROUP BY "SMTAPP"."XF_MASTER"."ID",
"SMTAPP"."XP_MASTER_DETAIL"."WIFENAME",
"SMTAPP"."XP_MASTER_DETAIL"."COUNT"
当您使用GROUP BY时,您选择的所有列必须使用聚合函数进行聚合,或者位于GROUP BY子句中。否则,该列将有一个项目列表,而不是单个值
因此,请尝试使用以下方法替换现有组:
GROUP BY "SMTAPP"."XF_MASTER"."ID",
"SMTAPP"."XP_MASTER_DETAIL"."WIFENAME",
"SMTAPP"."XP_MASTER_DETAIL"."COUNT"
在最内部的查询中
SELECT DISTINCT
"SMTAPP"."XF_MASTER"."ID" AS "XfMasterEntityId",
"SMTAPP"."XP_MASTER_DETAIL"."WIFENAME" AS "XpMasterDetailEntityWifename",
"SMTAPP"."XP_MASTER_DETAIL"."COUNT" AS "XpMasterDetailEntityCount",
MAX ("SMTAPP"."XP_MASTER_DETAIL"."COUNT") AS "XpMasterDetailEntityCountMax"
FROM ("SMTAPP"."XF_MASTER" LEFT JOIN "SMTAPP"."XP_MASTER_DETAIL"
ON "SMTAPP"."XF_MASTER"."ID" = "SMTAPP"."XP_MASTER_DETAIL"."XF_MASTER_ID")
GROUP BY "SMTAPP"."XP_MASTER_DETAIL"."COUNT"
ORDER BY "SMTAPP"."XF_MASTER"."ID" ASC
您在SELECT中有列,即
"SMTAPP"."XF_MASTER"."ID" AS "XfMasterEntityId",
及
SMTAPP.XP\U MASTER\U DETAIL.COUNT不属于组的一部分,这是不允许的
您只能在SELECT中包含属于Group By的列,或使用最内部查询中的聚合函数(如MAX/AVG etc)聚合的列
SELECT DISTINCT
"SMTAPP"."XF_MASTER"."ID" AS "XfMasterEntityId",
"SMTAPP"."XP_MASTER_DETAIL"."WIFENAME" AS "XpMasterDetailEntityWifename",
"SMTAPP"."XP_MASTER_DETAIL"."COUNT" AS "XpMasterDetailEntityCount",
MAX ("SMTAPP"."XP_MASTER_DETAIL"."COUNT") AS "XpMasterDetailEntityCountMax"
FROM ("SMTAPP"."XF_MASTER" LEFT JOIN "SMTAPP"."XP_MASTER_DETAIL"
ON "SMTAPP"."XF_MASTER"."ID" = "SMTAPP"."XP_MASTER_DETAIL"."XF_MASTER_ID")
GROUP BY "SMTAPP"."XP_MASTER_DETAIL"."COUNT"
ORDER BY "SMTAPP"."XF_MASTER"."ID" ASC
您在SELECT中有列,即
"SMTAPP"."XF_MASTER"."ID" AS "XfMasterEntityId",
及
SMTAPP.XP\U MASTER\U DETAIL.COUNT不属于组的一部分,这是不允许的
您只能在SELECT中包含属于Group By的列,或使用诸如MAX/AVG等聚合函数聚合的列。@eumiro的意思是什么
SELECT *
FROM (SELECT a.*, ROWNUM r___
FROM (SELECT DISTINCT "SMTAPP"."XF_MASTER"."ID" AS "XfMasterEntityId",
"SMTAPP"."XP_MASTER_DETAIL"."WIFENAME" AS "XpMasterDetailEntityWifename",
"SMTAPP"."XP_MASTER_DETAIL"."COUNT" AS "XpMasterDetailEntityCount",
MAX ("SMTAPP"."XP_MASTER_DETAIL"."COUNT") AS "XpMasterDetailEntityCountMax"
FROM ("SMTAPP"."XF_MASTER" LEFT JOIN "SMTAPP"."XP_MASTER_DETAIL"
ON "SMTAPP"."XF_MASTER"."ID" = "SMTAPP"."XP_MASTER_DETAIL"."XF_MASTER_ID")
GROUP BY "SMTAPP"."XF_MASTER"."ID", "SMTAPP"."XP_MASTER_DETAIL"."WIFENAME", "SMTAPP"."XP_MASTER_DETAIL"."COUNT"
ORDER BY "SMTAPP"."XF_MASTER"."ID" ASC) a
WHERE ROWNUM < '11')
WHERE r___ >= '1'
@eumiro的意思是
SELECT *
FROM (SELECT a.*, ROWNUM r___
FROM (SELECT DISTINCT "SMTAPP"."XF_MASTER"."ID" AS "XfMasterEntityId",
"SMTAPP"."XP_MASTER_DETAIL"."WIFENAME" AS "XpMasterDetailEntityWifename",
"SMTAPP"."XP_MASTER_DETAIL"."COUNT" AS "XpMasterDetailEntityCount",
MAX ("SMTAPP"."XP_MASTER_DETAIL"."COUNT") AS "XpMasterDetailEntityCountMax"
FROM ("SMTAPP"."XF_MASTER" LEFT JOIN "SMTAPP"."XP_MASTER_DETAIL"
ON "SMTAPP"."XF_MASTER"."ID" = "SMTAPP"."XP_MASTER_DETAIL"."XF_MASTER_ID")
GROUP BY "SMTAPP"."XF_MASTER"."ID", "SMTAPP"."XP_MASTER_DETAIL"."WIFENAME", "SMTAPP"."XP_MASTER_DETAIL"."COUNT"
ORDER BY "SMTAPP"."XF_MASTER"."ID" ASC) a
WHERE ROWNUM < '11')
WHERE r___ >= '1'