我正在尝试将两个表联接到以下查询:
SELECT "NUMBER",
"U_ANALYZED_DATE",
"DV_SALES_ACCOUNT",
"U_USD_TOTAL_POTENTIAL_NNACV"
FROM
(select *, row_number() over ( partition by "DV_SALES_ACCOUNT" order by "U_ANALYZED_DATE" desc ) rownum
from "SURF_RT"."SALES_REQUEST")
WHERE rownum = 1
AND "DV_SALES_CATEGORY" = 'Compliance'
AND "DV_STATE" NOT IN ('Closed Canceled')
AND (YEAR("U_ANALYZED_DATE") = '2019' AND MONTH("U_ANALYZED_DATE") IN ('10','11','12')
OR YEAR("U_ANALYZED_DATE") = '2020' AND MONTH("U_ANALYZED_DATE") IN ('1','2','3'))
AND "U_USD_TOTAL_POTENTIAL_NNACV" > 0
ORDER BY "U_ANALYZED_DATE" desc
这些表应按以下方式连接:
JOIN "SURF_RT"."SALES_ACCOUNT" on "SURF_RT"."SALES_ACCOUNT"."NAME" = "SURF_RT"."SALES_REQUEST"."DV_SALES_ACCOUNT"
JOIN "SURF_RT"."SALES_CONTRACT" on "SURF_RT"."SALES_CONTRACT"."DV_ACCOUNT" = "SURF_RT"."SALES_REQUEST"."DV_SALES_ACCOUNT"
无论尝试什么,都会遇到错误,这一定是因为分区。有人知道这里的解决方案吗?
I suspect
,您只需要别名化派生表,以便随后可以引用它。无论如何,在许多数据库中,这都是强制性的,但是在Hana中显然不是(否则,您的原始查询将无法运行)。此查询的问题不是“ where rownum = 1
必须在末尾”,而是OP被SQL表达式的括号弄糊涂了。更具体地说,尝试通过针对子查询中使用的基表指定连接条件来尝试引用子查询数据:
在那里rownum = 1需要在结尾处结束: