2016-01-22 133 views
0

想知道任何人都可以幫助我。 我有一個存儲過程是這樣的日期輸出:刪除TSQL列中的重複項

Year AccountName Certs MoreCerts 
2015 Rosy  3650097 444455 
2015 Rosy  3650097 5645665 
2015 Rosy  3650097 4544 
2015 Rosy  3650097 33423 
2015 Rosy  3650097 232454 
2014 Rosy  112379  6767878 
2014 Rosy 112379 68878 
2014 Rosy 112379 567 
2014 Rosy 112379 567 
2014 Rosy 112379 4567 
2014 Rosy 112379 345667 
2015 John 12000 23456 
2015 John 12000 23345 
2015 John 12000 2111 
2015 John 12000 456 
2014 John 50000 887 
2014 John 50000 43432 
2014 John 50000 2333 

,我想有這樣即從證證書列中刪除重複值,而在表中保留一切,因爲它是

Year AccountName Certs  MoreCerts 
2015 Rosy   3650097  444455 
2015 Rosy      5645665 
2015 Rosy      4544 
2015 Rosy      33423 
2015 Rosy      232454 
2014 Rosy   112379  6767878 
2014 Rosy      68878 
2014 Rosy      567 
2014 Rosy      567 
2014 Rosy      4567 
2014 Rosy      345667 
2015 John   12000   23456 
2015 John      23345 
2015 John      2111 
2015 John      456 
2014 John   50000   887 
2014 John      43432 
2014 John      2333 

嘗試row_number和子選擇等,但無法弄清楚。 任何幫助請問?

+0

如何在此添加表格? – user2718203

+0

你可以使用sql_fiddle –

回答

2

像這樣的東西應該工作:

select 
    Year, AccountName, case when rownum=1 then Certs else '' end as Certs, MoreCerts 
from (
    select *, row_number() over (partition by Certs order by MoreCerts) [rownum] 
    from your_table 
) x 
order by x.Certs, rownum 

根據您的資料,您不妨列添加到分區的和/或訂單的ROW_NUMBER改變()。

+0

我認爲你需要在下面的行中將'Cert'轉換爲空。即當rownum = 1時,則CAST(Certs as varchar)else''結束,如同Certs – Sahi

+0

完美!那正是我想要的。像魅力一樣工作。非常感謝@Blorgbeard。上帝祝福你。 – user2718203

+0

謝謝@Sahi它的工作 – user2718203