【问题标题】:remove duplicates in column TSQL删除列 SQL 中的重复项
【发布时间】:2016-01-22 09:10:25
【问题描述】:

想知道任何人都可以帮助我。 我有来自存储过程的日期输出,如下所示:

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

尝试了 row_number 和 sub select 等,但无法弄清楚。 有什么帮助吗?

【问题讨论】:

  • 请问如何在此处添加表格?
  • 你可以使用sql_fiddle

标签: sql sql-server


【解决方案1】:

这样的事情应该可以工作:

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

根据您的数据,您可能希望将列添加到 partition-by 和/或更改 row_number() 的 order-by。

【讨论】:

  • 我认为您需要强制转换 'Cert' 才能在以下行中变空。即当 rownum=1 然后 CAST(Certs as varchar) else '' end as Certs
  • 完美!这正是我想要的。像魅力一样工作。非常感谢@Blorgbeard。上帝保佑你。
猜你喜欢
  • 1970-01-01
  • 2017-11-17
  • 2019-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-14
相关资源
最近更新 更多