Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql &引用;第一个命令是;在Teradata中_Sql_Oracle_Teradata_Row Number - Fatal编程技术网

Sql &引用;第一个命令是;在Teradata中

Sql &引用;第一个命令是;在Teradata中,sql,oracle,teradata,row-number,Sql,Oracle,Teradata,Row Number,我在将SQL语句从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 =

我在将SQL语句从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
但我一直有一个错误:所选的非聚合值必须是关联组的一部分

这就是我得到的:

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
选择应收账款账号、已创建账户、余额账户
从VD_副本_BRM.pi_tp_账户
在ah.obj_id0=ar.poid_id0上加入VD_REPLICA_BRM.pi_tp_acct_ar_hist_tah
在acc.poid\U id0=ar.account\U obj\U id0上加入VD\U副本\U BRM.pi\U account\U acc
其中会计科目号为“00003095660515”

而且啊,我不确定你是否能用
qualify
做到这一点。一个等价的说法是:

SELECT ar.account_no, ah.created_t, ah.bal_acct
FROM (SELECT ar.account_no, ah.created_t, ah.bal_acct,
             ROW_NUMBER() OVER (PARTITION BY ar.account_no ORDER BY ah.created_t DESC) as seqnum
      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
     ) t
WHERE seqnum = 1;
ah.created\t
SELECT ar.account_no, ah.created_t, ah.bal_acct
FROM (SELECT ar.account_no, ah.created_t, ah.bal_acct,
             ROW_NUMBER() OVER (PARTITION BY ar.account_no ORDER BY ah.created_t DESC) as seqnum
      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
     ) t
WHERE seqnum = 1;
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 ar_account_no ORDER BY ah.created_t desc) = 1