我有桌子:
ID own1 own2 status
t1 A B 1
t1 B C 0
t1 C A 0
t1 A D 0
t1 D F 0
t2 D E 1
t2 E A 0
t3 A B 1
t3 B C 0
t4 A B 1
t5 E D 1
我希望根据列状态计数的值,按ID查找列own2 group的值。也就是说,如果计数(状态)< = 1则为own2,则为own2的the_last_value。
例如,对于ID t1,期望的结果将是'F',对于t2'A',对于t3'C',对于t4'B'
答案 0 :(得分:0)
这个问题难以理解,但是对我的意思你的意思以及数据的作用做了一些假设 - 特别是对于给定的id / own1,状态0优先于1,并且'last'你的意思是拥有最高的own1值,而且指的是状态计数最多是误导 - 我想出了这个:
SELECT DISTINCT ID,
FIRST_VALUE(OWN2) OVER (PARTITION BY ID ORDER BY STATUS, OWN1 DESC) AS OWN2
FROM MY_TABLE
ORDER BY ID;
给出了:
ID OWN2
-- ----
t1 F
t2 A
t3 C
t4 B
t5 D
(这也假设PLSQL标记暗示您正在使用Oracle,这可能不正确,因为该问题也没有与PL / SQL相关。)