OBIEE中的TOPN显示功能是如何工作的?我如何使用SQL Server来实现这一点?
where TOPN(N,10) <= 10)这是我的问题
SELECT
N,
SUM(column),
REPORT_SUM(SUM(column) BY N)
FROM
TABLE
WHERE
(TOPN(N,10) <= 10)发布于 2014-09-24 23:41:39
请参阅http://gerardnico.com/wiki/dat/obiee/topn
topn函数在criteria列公式中使用,但其结果是较小的数据集。如果使用topn(column,10),结果集将只有10行。
topn函数不会被传递回数据库,但会向数据库发送一个适当的查询。例如,对于Oracle RDBMS,一个子查询包含排名函数和基于排名的外部查询过滤器。
它向SQLServer提交了什么查询?我不知道,也许其他人能回答。
发布于 2014-09-22 19:24:08
从OBIEE的角度来看,TOPN函数允许OBIEE执行TOPN分析。Top 'N‘Analysis指的是从结果集中获取前n行(例如找到按薪资排名前三位的员工)。将TOPN作为公式列添加到答案中时,将自动筛选数据。您不需要添加任何特殊的TOPN过滤器。
表达式如下:
TOPN (n_expression, n)其中:
注意,一个查询只能包含一个TOPN表达式。
下面是输入的公式的屏幕截图,以及从OBIEE为该公式向数据库发出的物理SQL:

SELECT DISTINCT D1.c1 AS c1, D1.c2 AS c2, D1.c3 AS c3 FROM (SELECT DISTINCT 0 AS c1, D1.c1 AS c2, CASE WHEN CASE WHEN D1.c2 IS NOT NULL THEN RANK () OVER (ORDER BY D1.c2 DESC NULLS LAST) END <= 8 THEN CASE WHEN D1.c2 IS NOT NULL THEN RANK () OVER (ORDER BY D1.c2 DESC NULLS LAST) END END AS c3 FROM ( SELECT SUM (T428861.POUND_AMT) AS c1, T428861.PURCH_ORDER_NUM AS c2 FROM WC_ASN_SHIP_F T428861 WHERE (T428861.FINAL_SAMPLE_FLG = 'Y' AND T428861.DELETE_FLG = 'N') GROUP BY T428861.PURCH_ORDER_NUM) D1) D1 WHERE (D1.c3 <= 8) ORDER BY c1
http://gerardnico.com/wiki/dat/obiee/topn
https://stackoverflow.com/questions/25969552
复制相似问题