赋值唯一值 - 使用函数

时间:2013-09-05 00:40:41

标签: oracle function aggregate-functions

我的源表: - 前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

1 个答案:

答案 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;

在这里摆弄:http://sqlfiddle.com/#!4/04f59/11/0