2015-06-09 3 views
1

У меня есть таблица с каталогом №, расположением и количеством. Я хочу объединить все аналогичные каталоги # и указать количество новой строки в количестве всех строк с этим каталогом #.Сопоставление похожих столбцов в таблице SQL?

Например, если у меня есть:

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#, если это необходимо.

ответ

0

В C# это очень просто, используйте Hashset и добавьте все строки в этот набор. Он автоматически не добавит дубликат, и, наконец, u всегда будет иметь уникальные строковые записи int this items. См. Ниже образец.

using System.Collections.Generic; 

var items = new HashSet<string>(); 
      items.Add("1234"); 
      items.Add("1234"); 

      var count = items.Count; //it will be always one. 
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

+0

о том, где ... часть, могу ли я разместить 3 стола там? – Alecks

+0

Я имел в виду: на части я могу добавить 3 таблицы с запятыми? И что я хочу в той части? – Alecks

+0

@Alecks Вы добавите основную таблицу в 'from', а затем присоедините все остальные по мере необходимости. Поместите любой фильтр, который вам нужен, в 'where' (или просто удалите его, если не нужно). – Luaan

Смежные вопросы