0

我的源表:- 前 3 列是已排序的列。最终输出只有计划和目标。此输出表应具有分配给计划的唯一“目标”值。

Informatica 中使用的逻辑是:- IIF(PLAN != prev_plan OR prev_target='N',Target, 'Y')我需要使用 Oracle 函数合并输入参数应该是PLAN 请告诉我如何推导下面的输出。棘手的部分是源表可以有不同的“目标”,例如参考 PLAN='44385'

表:- SOURCE_TABLE

PLAN    EFFECTIVE_DATE  POCv                 TARGET
43922   3/26/2012 0:00  VTSSHG                  N
43923   3/26/2012 0:00  FXAFGF                  N
43923   3/26/2012 0:00  VTSSGF                  N
44385   4/17/2013 0:00  RAFGDG                  Y
44385   4/17/2013 0:00  RAFGDG                  N
44385   4/17/2013 0:00  RAFGDG                  N
44386   4/17/2013 0:00  RAFGDG                  Y

表:- OUTPUT_TABLE

PLAN_ID TARGET
43922   N
43923   N
43923   N
44385   Y
44385   Y
44385   Y
44386   Y
4

1 回答 1

0

如果我是对的:试试这个:

见:http ://sqlfiddle.com/#!4/04f59/7/0

select plan as plan_id, last_value(target) OVER (partition by plan ORDER BY plan) AS target from my_test;

您可以将此查询用于输入:

select plan_id, effective_date, effective_date, pocv, target 
from
(select plan as plan_id, "EFFECTIVE_DATE" effective_date, "POCv" pocv, last_value(target) OVER (partition by plan ORDER BY plan) AS target from my_test)
where plan_id  = 44385;

在这里小提琴:http ://sqlfiddle.com/#!4/04f59/11/0

于 2013-09-05T03:59:09.857 回答