Teradata 选定的非聚合值必须是关联组的一部分。SELECT命令失败

Teradata 选定的非聚合值必须是关联组的一部分。SELECT命令失败,teradata,Teradata,我正在使用下面的查询,它给出的错误是“选定的非聚合值必须是关联组的一部分。SELECT命令失败。” 从S_联系人中选择前100个X_ISP_AFF_ADDR_SEQ,将(COUNT(*)作为BIGINT)转换为COUNT_行,其中X_ISP_AFF_ADDR_SEQ与“%[a-zA-Z]”不同 我更改了上面的查询,如下所示,但错误仍然存在 从S_联系人中选择前100个X_ISP_AFF_ADDR_SEQ,CAST(计数(X_ISP_AFF_ADDR_SEQ)作为计数行,其中X_ISP_AFF_A

我正在使用下面的查询,它给出的错误是“选定的非聚合值必须是关联组的一部分。SELECT命令失败。”


从S_联系人中选择前100个X_ISP_AFF_ADDR_SEQ,将(COUNT(*)作为BIGINT)转换为COUNT_行,其中X_ISP_AFF_ADDR_SEQ与“%[a-zA-Z]”不同

我更改了上面的查询,如下所示,但错误仍然存在


从S_联系人中选择前100个X_ISP_AFF_ADDR_SEQ,CAST(计数(X_ISP_AFF_ADDR_SEQ)作为计数行,其中X_ISP_AFF_ADDR_SEQ与“%[a-zA-Z]”不同

此处可能缺少
GROUP BY
子句:

SELECT TOP 100
    X_ISP_AFF_ADDR_SEQ,
    CAST(COUNT(*) AS BIGINT) AS COUNT_ROW
FROM S_CONTACT
WHERE
    X_ISP_AFF_ADDR_SEQ NOT LIKE '%[a-zA-Z]%'
GROUP BY
    X_ISP_AFF_ADDR_SEQ;

您在原始查询中看到的确切错误与选择
X\u ISP\u AFF\u ADDR\u SEQ
指示Teradata为表中的每个记录返回值有关,而
COUNT()
则返回整个表中的值。在select子句中(通常)不可能混合聚合和非聚合。

第二次查询的原因是什么,我没有在那里使用任何其他属性。此外,我没有得到什么“所选非聚合值必须是关联组的一部分。SELECT命令失败。”意思是,您可以简单地解释一下,比如什么时候不能发生。选择前100个X_ISP_AFF_ADDR_SEQ,强制转换(计数(X_ISP_AFF_ADDR_SEQ)作为BIGINT)作为S_联系人的计数行,其中X_ISP_AFF_ADDR_SEQ不像“%[a-zA-Z]”;为什么此查询会出现相同的错误?如上所述,没有
GROUPBY
子句。您正在选择计数,它是一个表级聚合(即,它涉及所有记录)。您还选择了
X\u ISP\u AFF\u ADDR\u SEQ
,每个记录的值都不同。您希望Teradata选择哪个记录的值?这是不清楚的,因此您会得到一个错误。