我有一张如下表:
对于ID和VALUE的每个删除组合,我有几个步骤。例如,对于A和B的组合,我有三个步骤QC,LC和DR,依此类推C和D.现在,我想要一个如下视图:
也就是说,我希望视图中的列“OUTPUT”,我必须在QC之后为ID和VALUE的每个组合放置第一步。例如,对于A和B,QC之后的第一步是LC,因此OUTPUT值为LC。对于C和D,没有QC,因此OUTPUT值为NA。
任何人都可以帮我解决这个问题。
提前致谢。
答案 0 :(得分:0)
在SQL中,表本质上是无序的。因此,您需要一个列来指定顺序。我假设您有一个列,在表中说StepOrder
。如果是这样,那么你可以使用分析函数做你想做的事。
内部子查询中的lead()
返回下一步。下一个子查询中的max()
返回QA
之后的值,输出max()
将值扩展到具有相同id
和value
的所有行:< / p>
select id, value, step,
coalesce(max(qa_next) over (partition by id, value), 'NA') as "Output"
from (select t.*,
max(case when step = 'QA' then nextstep end) over (partition by id, value) as qa_next
from (select t.*,
lead(step) over (partition by id, value order by StepOrder) as nextStep
from table t
) t
) t