删除TSQL列中的重复项
想知道有谁能帮我吗。 我有一个存储过程的日期输出,如下所示:删除TSQL列中的重复项,sql,sql-server,Sql,Sql Server,想知道有谁能帮我吗。 我有一个存储过程的日期输出,如下所示: Year AccountName Certs MoreCerts 2015 Rosy 3650097 444455 2015 Rosy 3650097 5645665 2015 Rosy 3650097 4544 2015 Rosy 3650097 33423 2015 Rosy 3650097 232
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
我希望这样,即从Certs列中删除重复值,同时保留表中的所有其他内容
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
尝试了行号和子选择等,但无法确定。
有什么帮助吗?类似的方法应该可以:
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()的顺序将列添加到分区中。类似的操作应该可以:
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()的顺序将列添加到分区。我如何才能在此处添加表?您可以使用sql_Fiddle我如何才能在此处添加表?您可以使用sql_Fiddle我想您需要强制转换“Cert”以在以下行中变为空。i、 当rownum=1时,则强制转换(证书为varchar),否则“”将以CertsPerfect结束!这正是我想要的。工作很有魅力。非常感谢@Blorgbeard。上帝保佑你。我想你需要投下“证书”才能在接下来的几行中变空。i、 当rownum=1时,则强制转换(证书为varchar),否则“”将以CertsPerfect结束!这正是我想要的。工作很有魅力。非常感谢@Blorgbeard。上帝保佑你。