基于count的PL SQL案例

时间:2011-05-05 06:43:01

标签: plsql

我有桌子:

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'

1 个答案:

答案 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相关。)