2015-04-23 63 views
0

我有源表Test包含id列,目標表testmid , col2組成。請幫助我擺脫這個錯誤。在case語句中缺少表達式錯誤

test (source)     

id        
---        
10      
10 
20 
20 
20 
30 
30 
40 

目標

testm 

id col2     
-- ----     
10 1     
10 2   
20 1   
20 2   
20 3   
30 1   
30 2   
40 1   

查詢:

select id, (case id 
      when 10 then select count(id) from test where id =10 
      when 20 then select count(id) from test where id =20 
      when 30 then select count(id) from test where id =30 
      when 40 then select count(id) from test where id =40 
else 0 END) col2 from test 

引發錯誤:

missing expression

回答

0

通過觀察所需的輸出我想這要編號的每個g的出現roups;如果這是使用ROW_NUMBER解析函數應該做你想要什麼情況:

select id, row_number() over (partition by id order by id) as col2 
from test 
order by id; 

見這個樣本SQL Fiddle

給你示例源數據,這將是輸出:

| ID | COL2 | 
|----|------| 
| 10 | 1 | 
| 10 | 2 | 
| 20 | 1 | 
| 20 | 2 | 
| 20 | 3 | 
| 30 | 1 | 
| 30 | 2 | 
| 40 | 1 | 
+0

喜@ jpw感謝您的快速回復。它滿足了我的要求。是否有可能通過case語句實現相同的o/p?感謝您的解決方案。 – affable

+0

@affable我不認爲這是可能的案件陳述,至少我想不出任何方式。 – jpw