Teradata 3504/3627 выпуск - PullRequest
       12

Teradata 3504/3627 выпуск

1 голос
/ 14 июля 2011

У меня остается одна и та же проблема, связанная с конкретным запросом со следующим столбцом:

CAST((COALESCE(price, 0.000000)) AS DECIMAL(18,6)) * quantity amount (TITLE 'Amount')

Если я не упомянул об этом в группе, из-за этого извергается ошибка 3504, если я это сделаю, извергается ошибка 3627.

Есть идеи, как правильно структурировать эту часть запроса?

изменить: если вам нужна дополнительная информация, пожалуйста, спросите:)

1 Ответ

1 голос
/ 29 июля 2011

Я полагаю, что вы столкнулись с множеством проблем здесь (трудно сказать без кода).

3504 возникает, когда этот столбец не является частью предложения GROUP BY, поскольку все столбцы, которые не являются частью GROUP BY, должны быть «агрегатными» функциями (например, SUM, MAX, MIN, AVG и т. Д.). Когда вы включаете его в GROUP BY, этот столбец в порядке.

Тем не менее, я предполагаю, что у вас также есть COUNT (DISTINCT (x)) в вашем списке SELECTion. Вы не можете использовать функцию DISTINCT в предложении SELECT, ORDER BY или HAVING запроса, когда также используется GROUP BY. Я подозреваю, что если вы удалите DISTINCT, оставив вас с COUNT (*), это будет работать.

Кроме того, я не уверен, что вы хотите группировать по колонке, которую вы упомянули здесь. Это необычно группировать по финансовой сумме. Для этого столбца более характерно, например, объединение с функцией SUM. В противном случае вы можете захотеть пересмотреть, почему вы используете GROUP BY (поскольку группировка по «количеству» даст вам странные результаты, по сути, давая вам по одной строке для каждой возвращаемой строки, за исключением случаев, когда столбцы GROUP BY и «сумма») то же самое, где он свернет его до одной строки, что означает, что вы получите противоречивые результаты).

Надеюсь, это поможет.

...