2016-09-30 17 views
0

假设一个表:一个查询并增加重复的值的字段在列(甲骨文)

-------------------------------- 
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 

我想有一个查询有呈现的值的列时是否在山坳有一个值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

你只是想count(*)作为窗口函数:

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

谢谢,那它有2列分区,比如复合关键,在于确定 – Dreamer

+1

@Dreamer。 。 。您可以分割多列,甚至表达式。 –