2016-09-30 19 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。 。 。您可以分割多列,甚至表達式。 –