Jeśli szukasz, aby uzyskać wiersze które zawierają wartości z MAX(num) GROUP BY id
, to wydaje się być wspólny wzór ...
WITH
sequenced_data
AS
(
SELECT
ROW_NUMBER() OVER (PARTITION BY id ORDER BY num DESC) AS sequence_id,
*
FROM
yourTable
)
SELECT
*
FROM
sequenced_data
WHERE
sequence_id = 1
EDIT
ja nie wiem, czy Teradata pozwoli, ale logika wydaje się mieć sens ...
SELECT
*
FROM
yourTable
WHERE
num = MAX(num) OVER (PARTITION BY id)
A może ...
SELECT
*
FROM
(
SELECT
*,
MAX(num) OVER (PARTITION BY id) AS max_num_by_id
FROM
yourTable
)
AS sub_query
WHERE
num = max_num_by_id
Jest nieco różni się od mojej poprzedniej odpowiedzi; jeśli wiele rekordów jest powiązanych z tymi samymi MAX(num)
, to zwróci je wszystkie, druga odpowiedź tylko zwróci jeden.
EDIT
W proponowanej SQL błąd odnosi się do faktu, że klauzula OVER()
nie zawiera pola w GROUP BY. To tak, jakby starając się to zrobić ...
SELECT id, num FROM yourTable GROUP BY id
num
jest nieważne, ponieważ nie może być wiele wartości w tej dziedzinie za każdy wiersz zwrócony (z wierszy zwracanych jest określona przez GROUP BY id
).
W ten sam sposób nie można umieścić num
w klauzuli OVER()
.
SELECT
id,
MAX(num), <-- Valid as it is an aggregate
MAX(num) <-- still valid
OVER(PARTITION BY id), <-- Also valid, as id is in the GROUP BY
MAX(num) <-- still valid
OVER(PARTITION BY num) <-- Not valid, as num is not in the GROUP BY
FROM
yourTable
GROUP BY
id
Zobacz to pytanie, gdy nie można określić coś w klauzuli OVER()
i odpowiedzi pokazujący kiedy (chyba) można: over-partition-by-question
Nie możemy zobaczyć swój komunikat o błędzie stąd. – RBarryYoung
Czy możesz pokazać wynik, którego oczekujesz, opis nie miał dla mnie sensu ... 'Chcę pobrać wartość związaną z maksymalną liczbą każdego numeru ID'. Nie jestem również pewien, jaka różnica ORDER BY spowodowałaby funkcję MAX() ... – MatBailie
Brak dokładnej odpowiedzi na pytanie, ale dobre wprowadzenie na temat oracle Funkcje analityczne można znaleźć na stronie [orafaq] (http: // www.orafaq.com/node/55). Post pomaga zrozumieć pojęcia za pomocą prostych przykładów. –