Sql 不是表达式的分组
我有以下选择:Sql 不是表达式的分组,sql,oracle,group-by,Sql,Oracle,Group By,我有以下选择: Select attribut1, dateattribut, attribut3, attribut4, attribut15, town_CODE, count(*) from ( select attribut1, dateattribut, attribut3, attribut4, attribut15, (CASE WHEN TO_CHAR(dateattribut,'YYYY') = '2005' THEN CASE t
Select attribut1, dateattribut, attribut3,
attribut4, attribut15, town_CODE, count(*)
from (
select attribut1, dateattribut, attribut3, attribut4, attribut15, (CASE
WHEN TO_CHAR(dateattribut,'YYYY') = '2005' THEN
CASE town_CODE
WHEN '039' THEN '078' WHEN '050' THEN '093'
WHEN '091' THEN '008' WHEN '102' THEN '093'
ELSE town_CODE end
ELSE town_CODE end) as town_CODE
from towntable) GROUP BY attribut1, dateattribut,
attribut3, attribut4,
attribut15, town_CODE
having count(*) > 1;
当我在我们的服务器上执行这个查询时,它工作得很好。但是在我客户的服务器上,我得到了oracle错误ORA-00979:不是GROUP BY表达式
据我所知,我在案件和别名方面有问题。
没有这个,它就可以工作
有什么建议吗
*我想用这个语句做的是得到所有的复式输入。通过内部查询,我将所有旧代码更改为新代码,然后我想对它们进行分组,以查看它们是否多次存在。
一些客户确实使用了旧代码,现在他们可能有两次使用同一个城镇
编辑
SELECT*FROM product\u component\u version
我对这两个都有兴趣:
Product Version Status
NLSRTL 10.2.0.4.0 Production
Oracle Database 10g Enterprise Edition 10.2.0.4.0 64bi
PL/SQL 10.2.0.4.0 Production
TNS for 64-bit Windows: 10.2.0.4.0 Production
edit2
我的测试显示他不喜欢用化名打电话。
是否存在无法识别别名的设置?表名后缺少一个括号,属性15后缺少一个逗号。试试这个:
Select attribut1, dateattribut, attribut3,
attribut4, attribut15, town_CODE, count(*)
from (
select attribut1, dateattribut, attribut3, attribut4, attribut15, (CASE
WHEN TO_CHAR(dateattribut,'YYYY') = '2005' THEN
CASE town_CODE
WHEN '039' THEN '078' WHEN '050' THEN '093'
WHEN '091' THEN '008' WHEN '102' THEN '093'
ELSE town_CODE end
ELSE town_CODE end) as town_CODE
from towntable) GROUP BY attribut1, dateattribut,
attribut3, attribut4,
attribut15, town_CODE
having count(*) > 1;
表名后缺少一个括号,属性15后缺少一个逗号。试试这个:
Select attribut1, dateattribut, attribut3,
attribut4, attribut15, town_CODE, count(*)
from (
select attribut1, dateattribut, attribut3, attribut4, attribut15, (CASE
WHEN TO_CHAR(dateattribut,'YYYY') = '2005' THEN
CASE town_CODE
WHEN '039' THEN '078' WHEN '050' THEN '093'
WHEN '091' THEN '008' WHEN '102' THEN '093'
ELSE town_CODE end
ELSE town_CODE end) as town_CODE
from towntable) GROUP BY attribut1, dateattribut,
attribut3, attribut4,
attribut15, town_CODE
having count(*) > 1;
原始查询中似乎有一个或两个语法错误-以下应该可以工作:
Select attribut1,
dateattribut,
attribut3,
attribut4,
attribut15,
town_CODE,
count(*)
from (select attribut1,
dateattribut,
attribut3,
attribut4,
attribut15,
CASE WHEN TO_CHAR(dateattribut,'YYYY') = '2005' THEN
CASE town_CODE
WHEN '039' THEN '078'
WHEN '050' THEN '093'
WHEN '091' THEN '008'
WHEN '102' THEN '093'
ELSE town_CODE
end
ELSE town_CODE
end as town_CODE
from towntable) v
GROUP BY attribut1,
dateattribut,
attribut3,
attribut4,
attribut15,
town_CODE
having count(*) > 1
原始查询中似乎有一个或两个语法错误-以下应该可以工作:
Select attribut1,
dateattribut,
attribut3,
attribut4,
attribut15,
town_CODE,
count(*)
from (select attribut1,
dateattribut,
attribut3,
attribut4,
attribut15,
CASE WHEN TO_CHAR(dateattribut,'YYYY') = '2005' THEN
CASE town_CODE
WHEN '039' THEN '078'
WHEN '050' THEN '093'
WHEN '091' THEN '008'
WHEN '102' THEN '093'
ELSE town_CODE
end
ELSE town_CODE
end as town_CODE
from towntable) v
GROUP BY attribut1,
dateattribut,
attribut3,
attribut4,
attribut15,
town_CODE
having count(*) > 1
“当我在我们的服务器上执行这个查询时,它工作得很好
我的客户服务器我收到oracle错误ORA-00979:不是一个组
通过表达式。
”
这意味着两件事之一:
ORA-00979:不是一个组
通过表达式。
”
这意味着两件事之一:
该错误意味着您在投影中有一个不在GROUPBY子句中的非聚合列,或者GROUPBY子句中有一些不在投影中的列 我的解决方案是使用视图 内部选择作为视图,然后外部选择作为法线,这样效果很好 我发现他不喜欢外面的密码
Select attribut1, dateattribut, attribut3,
attribut4, attribut15, town_CODE, count(*)
from v_towntable
GROUP BY attribut1, dateattribut, attribut3,
attribut4, attribut15, town_CODE
having count(*) > 1
我的解决方案是使用视图 内部选择作为视图,然后外部选择作为法线,这样效果很好 我发现他不喜欢外面的密码
Select attribut1, dateattribut, attribut3,
attribut4, attribut15, town_CODE, count(*)
from v_towntable
GROUP BY attribut1, dateattribut, attribut3,
attribut4, attribut15, town_CODE
having count(*) > 1
这只是一个输入错误。如果在两台服务器上都只运行上面的“我的代码”,实际的查询会稍微大一点(此属性会有更多的更改),您会收到任何错误吗?仍然是相同的错误:-(当我在第一次选择中删除town_代码时,我发现它是有效的。但是我不知道它是哪个城镇。这只是一个输入错误,实际查询要大一点(此属性有更多更改),如果您在两台服务器上都只运行上面的代码,您会得到任何错误吗?仍然是相同的错误:-(我在第一次删除town_代码时发现了它的工作原理。但是我不知道它是哪个town_代码。嗯,第2条是不是因为代码相同。或者复制粘贴更改代码。对于DB版本a,选择
select*FROM product_component_version;
显示相同的结果(参见我的帖子)2号井是不是因为代码相同。或者复制粘贴更改代码。对于DB版本a,选择select*FROM product\u component\u version;
显示相同的结果(参见我的帖子)@rageit(错误地)更改有问题的外壳是无效的edits@rageit(错误)更改有问题的外壳是无效的编辑