我的源表: - 前3列是排序列。最终的OUTPUT只有PLAN和TARGET。此输出表应具有分配给PLAN的唯一“TARGET”值。
和Informatica中使用的逻辑是: - IIF(PLAN!= prev_plan或prev_target ='N',目标,'Y')我需要使用Oracle Functions合并输入参数应该是的 PLAN 请你告诉我如何得出以下输出。棘手的部分是源表可以有不同的“TARGET”,例如参考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
答案 0 :(得分: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;