2
У меня проблема с преобразованием SQL-запроса из Oracle в Teradata. В Oracle говорится, что:«Первый заказ» в Teradata
SELECT ar.account_no,
MAX (ah.bal_acct) KEEP (DENSE_RANK FIRST ORDER BY ah.created_t desc)
FROM ar
JOIN ah ON ah.obj_id0 = ar.poid_Id0
JOIN acc ON a.poid_id0 = ar.account_obj_Id0
WHERE acc.account_no = '1234'
AND ah.created_t <= 1434753495
GROUP BY ar.account_no
Мне нужно сделать подобное заявление в Терадате. Я пытался что-то с
QUALIFY ROW_NUMBER() OVER(PARTITION BY max(ah.bal_acct) ORDER BY ah.created_t desc) = 1
Но все время у меня есть ошибки: Selected, не агрегированные значения должны быть частью соответствующей группы.
Это то, что я получил:
Select ar.account_no, ah.created_t, ah.bal_acct
FROM VD_REPLICA_BRM.pi_tp_acct_ar_t ar
JOIN VD_REPLICA_BRM.pi_tp_acct_ar_hist_T ah ON ah.obj_id0 = ar.poid_Id0
JOIN VD_REPLICA_BRM.pi_account_t acc ON acc.poid_id0 = ar.account_obj_Id0
WHERE acc.account_no = '00003095660515'
AND ah.created_t <= CAST('2016-10-31' AS DATE FORMAT 'YYYY-MM-DD')
QUALIFY ROW_NUMBER() OVER(PARTITION BY max(ah.bal_acct) ORDER BY ah.created_t desc) = 1
GROUP BY ar.account_no
Где я ошибаюсь?
'ah.created_t <= date '2016-10-31''. Это обозначение ANSI/ISO для литературных дат –