Sql 在GROUPBY子句中添加常量值列
Netezza sql在此查询中给出错误:原因:列名“dummy”无效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
如果我从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