Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.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 在GROUPBY子句中添加常量值列_Sql_Group By_Netezza - Fatal编程技术网

Sql 在GROUPBY子句中添加常量值列

Sql 在GROUPBY子句中添加常量值列,sql,group-by,netezza,Sql,Group By,Netezza,Netezza sql在此查询中给出错误:原因:列名“dummy”无效 如果我从GROUPBY子句中删除虚拟对象,它就可以正常工作。但是根据sql语法,我应该在group by中包含所有非聚合列。为什么在group by中需要它,您可以使用聚合函数,其结果总是正确的,因为值是常量,例如: select col1,col2, min(' ') as dummy, max(col3) from table1 group by col1,col2 按基本操作。分组操作是在NeathFile IOs

Netezza sql在此查询中给出错误:原因:列名“dummy”无效


如果我从GROUPBY子句中删除虚拟对象,它就可以正常工作。但是根据sql语法,我应该在group by中包含所有非聚合列。

为什么在group by中需要它,您可以使用聚合函数,其结果总是正确的,因为值是常量,例如:

select col1,col2, min(' ') as dummy, max(col3) from table1  group by col1,col2
按基本操作。分组操作是在NeathFile IOs下的联接操作之后执行的操作。。然后只有选定的结果集可用

现在,您在SELECT中将某个对象指定为Dummy,而数据库将不知道它,因为在分组时,它在表级别不可用

尝试使用“按您的列分组”进行查询,结果会很好。。因为你直接提到它,而不是指一个别名


最后,当使用GROUP by时。。您可以在SELECT或GROUP BY.中指定任何常量。。因为它们毕竟包含在所选结果中,而不涉及表操作。所以数据库会原谅他们。

这是因为操作顺序

从 参加 哪里 分组 ... 挑选


使用group by时,只有上一步剩余的字段可用。由于直到Select语句出现时才声明伪列,因此group by不知道它的存在,因此不需要对其进行说明。

伪列是一个静态列,不在表中,因此它不需要在group by中,因为它是一个外部列

SELECT col1,
       col2,
       cast(5 as int) AS [dummy],
       max(col3)
FROM test_1
GROUP BY col1,
         col2,
         col3,
        'dummy'
该代码产生外部参考错误164

看看这些链接


要解决此问题,请将其分组到外层:

SELSE X.col1, X.col2, X.dummy, max(col3)
FROM (
  SELECT col1,
         col2,
         cast(5 as int) AS [dummy],
         col3
  FROM test_1
)
GROUP BY X.col1,
         X.col2,
         X.dummy

非聚合列。。不是价值观。。你已经回答了你的问题!
SELSE X.col1, X.col2, X.dummy, max(col3)
FROM (
  SELECT col1,
         col2,
         cast(5 as int) AS [dummy],
         col3
  FROM test_1
)
GROUP BY X.col1,
         X.col2,
         X.dummy