Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 объединить строки в таблице  [new]
SandraSidorova
Member

Откуда: Пермь
Сообщений: 60
Совсем не могу понять как мне объединить эти строки.. если element, part, metr совпадают. Подскажите, если не трудно. Вроде задача простая

К сообщению приложен файл. Размер - 127Kb
13 янв 17, 15:04    [20103215]     Ответить | Цитировать Сообщить модератору
 Re: объединить строки в таблице  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2414
SandraSidorova,

https://msdn.microsoft.com/ru-ru/library/ms177673.aspx
13 янв 17, 15:18    [20103299]     Ответить | Цитировать Сообщить модератору
 Re: объединить строки в таблице  [new]
aleks2
Guest
Совсем не могу понять что значит в вашей голове "объединить эти строки"?
13 янв 17, 15:19    [20103303]     Ответить | Цитировать Сообщить модератору
 Re: объединить строки в таблице  [new]
Sybex
Member

Откуда: Moscow
Сообщений: 119
Остаётся вопрос: что делать с остальными четырьмя столбцами? Каким образом вы их хотите объединить? Можно взять минимум, максимум, сумму и т.д., то есть нужно использовать одну из агрегатных функций с предложением GROUP BY. Агрегатные функции, за исключением Count, игнорируют значения NULL. Например, можно так:
SELECT element
      ,part
      ,MIN(razm_korr) AS razm_korr
      ,MIN(deep_korr) AS deep_korr
      ,MIN(razm_mech) AS razm_mech
      ,MIN(deep_mech) AS deep_mech
      ,metr
  FROM TableName
 GROUP BY element, part, metr
16 янв 17, 11:36    [20109646]     Ответить | Цитировать Сообщить модератору
 Re: объединить строки в таблице  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Sybex
за исключением Count
Разве?
16 янв 17, 11:39    [20109678]     Ответить | Цитировать Сообщить модератору
 Re: объединить строки в таблице  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8807
select count(*) from (values (null),(null)) t1(f1)
?
16 янв 17, 11:57    [20109782]     Ответить | Цитировать Сообщить модератору
 Re: объединить строки в таблице  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8807
и второй вариант
select count(f1) from (values (cast(null as int)),(cast(null as int))) t1(f1)
16 янв 17, 11:59    [20109788]     Ответить | Цитировать Сообщить модератору
 Re: объединить строки в таблице  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Владислав Колосов
select count(*) from (values (null),(null)) t1(f1)

?
SELECT COUNT(f1) FROM(VALUES(NULL),(NULL)) t1(f1)

?
16 янв 17, 11:59    [20109789]     Ответить | Цитировать Сообщить модератору
 Re: объединить строки в таблице  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
iap
SELECT COUNT(f1) FROM(VALUES(NULL),(NULL)) t1(f1)
Действительно, CAST требует...
16 янв 17, 12:01    [20109800]     Ответить | Цитировать Сообщить модератору
 Re: объединить строки в таблице  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8807
Вероятно, * вводит в заблуждение :) Ох уж эта звёздочка :)
16 янв 17, 12:02    [20109810]     Ответить | Цитировать Сообщить модератору
 Re: объединить строки в таблице  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Владислав Колосов
Вероятно, * вводит в заблуждение :) Ох уж эта звёздочка :)
Можно ведь и по-другому рассуждать:
* - это как бы не NULL. Значит, COUNT строки не игнорирует.
16 янв 17, 12:04    [20109819]     Ответить | Цитировать Сообщить модератору
 Re: объединить строки в таблице  [new]
Sybex
Member

Откуда: Moscow
Сообщений: 119
Все претензии к Microsoft, вот выдержка из BOL:
Aggregate Functions (Transact-SQL)
Aggregate functions perform a calculation on a set of values and return a single value. Except for COUNT, aggregate functions ignore null values. Aggregate functions are frequently used with the GROUP BY clause of the SELECT statement.

Источник: https://msdn.microsoft.com/en-us/library/ms173454.aspx
16 янв 17, 13:21    [20110159]     Ответить | Цитировать Сообщить модератору
 Re: объединить строки в таблице  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
Sybex
Все претензии к Microsoft, вот выдержка из BOL:
Aggregate Functions (Transact-SQL)
Aggregate functions perform a calculation on a set of values and return a single value. Except for COUNT, aggregate functions ignore null values. Aggregate functions are frequently used with the GROUP BY clause of the SELECT statement.

Источник: https://msdn.microsoft.com/en-us/library/ms173454.aspx

все притенении к читателям
https://msdn.microsoft.com/en-us/library/ms175997.aspx
автор
*
Specifies that all rows should be counted to return the total number of rows in a table. COUNT(*) takes no parameters and cannot be used with DISTINCT. COUNT(*) does not require an expression parameter because, by definition, it does not use information about any particular column. COUNT(*) returns the number of rows in a specified table without getting rid of duplicates. It counts each row separately. This includes rows that contain null values.
16 янв 17, 13:24    [20110183]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить