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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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
Sql 不是表达式的分组_Sql_Oracle_Group By - Fatal编程技术网

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子句中有一些不在投影中的列

    “当我在我们的服务器上执行这个查询时,它工作得很好 我的客户服务器我收到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(错误)更改有问题的外壳是无效的编辑