【问题标题】:Combining similar columns in a SQL table?在 SQL 表中组合相似的列?
【发布时间】:2015-06-09 15:47:06
【问题描述】:

我有一张表,上面有目录#、位置和数量。我想合并所有相似的目录#,并让新行的数量是所有行的数量与该目录#的总和。

例如,如果我有:

Catalouge#, Location, Quantity
1234, A, 5
1234, B, 10
1234, C, 10
4321, A, 2
4321, B, 3

我想结束:

Catalouge#, Location, Quantity
1234, null, 25
4321, null, 5

有数百个目录号,所以我无法对每个目录号进行单独查询。但这是我能想到的唯一方法。任何机构都有更通用的方法来做到这一点?我更喜欢在 sql 中执行此操作,但如有必要,我可以在 c# 中执行此操作。

【问题讨论】:

    标签: c# sql logic


    【解决方案1】:

    听起来你只需要分组:

    select
     CatalogueNo, null as Location, sum(Quantity) as Quantity
    from ...
    where ...
    group by CatalogueNo
    

    SQL 数据库非常擅长聚合。看看例如https://msdn.microsoft.com/en-us/library/ms173454.aspx

    【讨论】:

    • 在 where ... 部分,我可以放 3 张桌子吗?
    • 我的意思是:我可以在 from 部分添加 3 个带逗号的表格吗?我在 where 部分想要什么?
    • @Alecks 您将在from 中添加主表,然后根据需要加入任何其他表。将您需要的任何过滤器放在where 中(或者在不需要时将其删除)。
    【解决方案2】:

    在 C# 中非常简单,请使用 Hashset 并将所有字符串添加到该集合中。它不会自动添加重复项,最后您将始终在此项目中拥有一个唯一的字符串条目。请参阅下面的示例。

    using System.Collections.Generic;
    
    var items = new HashSet<string>();
                items.Add("1234");
                items.Add("1234");
    
                var count = items.Count; //it will be always one.
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多