一个查询,为列中的重复值添加字段(oracle)

时间:2016-09-30 20:00:37

标签: sql oracle

假设一个表:

--------------------------------
Col A | Col B | Col C | Col D
--------------------------------
  xx     xxx    xxxx     2000
  xx     xxx    xxxx     3000
  xx     xxx    xxxx     2000
  xx     xxx    xxxx     1450
  xx     xxx    xxxx     1000
  xx     xxx    xxxx     2000
  xx     xxx    xxxx     1000

我希望查询有一列值,表示col D中的值是否在列中具有相同的值,以便

-------------------------------------
Col A | Col B | Col C | Col D | Col E
-------------------------------------
  xx     xxx    xxxx     2000    Y
  xx     xxx    xxxx     3000    N
  xx     xxx    xxxx     2000    Y
  xx     xxx    xxxx     1450    N
  xx     xxx    xxxx     1000    Y
  xx     xxx    xxxx     2000    Y
  xx     xxx    xxxx     1000    Y

让列显示重复数量

会更好
-------------------------------------
Col A | Col B | Col C | Col D | Col E
-------------------------------------
  xx     xxx    xxxx     2000    3
  xx     xxx    xxxx     3000    1
  xx     xxx    xxxx     2000    3
  xx     xxx    xxxx     1450    1
  xx     xxx    xxxx     1000    2
  xx     xxx    xxxx     2000    3
  xx     xxx    xxxx     1000    2

1 个答案:

答案 0 :(得分:1)

您只需要count(*)作为窗口函数:

select t.*,
       count(*) over (partition by d) as e
from t;