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

Откуда: Киев
Сообщений: 173
Есть таблица

Поставщик Водитель Количество
Фокстрот Петров 10
Фокстрот 20
Эльдорадо Иванов 5


На выходе должно быть:
Поставщик Водитель Количество
Фокстрот Петров 30
Эльдорадо Иванов 5

Другими словами, нужно сгруппировать по поставщику, а потом по водителю. Но вся засада в том, что пустые никак не хотят добавляться.
13 сен 11, 18:56    [11271641]     Ответить | Цитировать Сообщить модератору
 Re: Как свернуть пустые строчки в запросе?  [new]
Glory
Member

Откуда:
Сообщений: 104751
А что будет с такими данными ?

Поставщик Водитель Количество
Фокстрот Петров 10
Фокстрот 20
Фокстрот Иванов 5
13 сен 11, 19:04    [11271675]     Ответить | Цитировать Сообщить модератору
 Re: Как свернуть пустые строчки в запросе?  [new]
RSRuslan
Member

Откуда: Киев
Сообщений: 173
На самом деле я уже давно сгруппировал строчки по поставщику, а потом по водителю.
Вот весь текст запроса:

select ДокСтрокиЗаказ.sp1365 as [Поставщик $Справочник.Контрагенты],
ДокСтрокиЗаказ.sp1837 as [Водитель $Справочник.Сотрудники],
sum(ДокСтрокиЗаказ.sp947) as Количество,
sum((СпрНом.sp2405 * СпрНом.sp2406 * СпрНом.sp2407 / 1000000 +
СпрНом.sp2490 * СпрНом.sp2491 * СпрНом.sp2492 / 1000000) *
ДокСтрокиЗаказ.sp947) as Объём
from dt958 as ДокСтрокиЗаказ with (nolock) inner join
_1SJourn as Жур with (nolock) on Жур.iddoc = ДокСтрокиЗаказ.iddoc inner join
dh958 as ДокЗаказ with (nolock) on ДокЗаказ.iddoc = Жур.iddoc inner join
sc189 as СпрНом with (nolock) on СпрНом.id = ДокСтрокиЗаказ.sp946
where Жур.IDDocDef = 958 and Жур.Date_Time_IDDoc between '20110704' and '20110705Z' and
Жур.closed&1 = 1 and convert(varchar,ДокЗаказ.sp2289,112) = '20110704' and
((ДокСтрокиЗаказ.sp1366 > 0) or (ДокСтрокиЗаказ.sp2005 > 0))
group by ДокСтрокиЗаказ.sp1365,ДокСтрокиЗаказ.sp1837

Этот запрос всё толично группирует, но там где водитель пустой а поставщике нет, группируется отдельной строчкой, а хотелось чтобы эти строчки сворачыивались :(
13 сен 11, 19:10    [11271711]     Ответить | Цитировать Сообщить модератору
 Re: Как свернуть пустые строчки в запросе?  [new]
возможно возможно
Guest
RSRuslan,

читать код невозможно, но у вас там везде INNER join,
и фильтры не факт что под OUTER заточены, всё в WHERE.
13 сен 11, 19:16    [11271758]     Ответить | Цитировать Сообщить модератору
 Re: Как свернуть пустые строчки в запросе?  [new]
Skiff
Member

Откуда: Москва
Сообщений: 55
Может быть так?
select ДокСтрокиЗаказ.sp1365 as [Поставщик $Справочник.Контрагенты],
       ДокСтрокиЗаказ.sp1837 as [Водитель $Справочник.Сотрудники],
       sum(ДокСтрокиЗаказ.sp947) as Количество,
       sum((СпрНом.sp2405 * СпрНом.sp2406 * СпрНом.sp2407 / 1000000 +
       СпрНом.sp2490 * СпрНом.sp2491 * СпрНом.sp2492 / 1000000) *
       ДокСтрокиЗаказ.sp947) as Объём
  from dt958 as ДокСтрокиЗаказ with (nolock) 
 inner join _1SJourn as Жур with (nolock) 
    on Жур.iddoc = ДокСтрокиЗаказ.iddoc
 inner join dh958 as ДокЗаказ with (nolock) 
    on ДокЗаказ.iddoc = Жур.iddoc 
 inner join sc189 as СпрНом with (nolock) 
    on СпрНом.id = ДокСтрокиЗаказ.sp946 
 where Жур.IDDocDef = 958 
   and Жур.Date_Time_IDDoc between '20110704' and '20110705Z' 
   and Жур.closed&1 = 1 
   and convert(varchar,ДокЗаказ.sp2289,112) = '20110704' 
   and ((ДокСтрокиЗаказ.sp1366 > 0) or (ДокСтрокиЗаказ.sp2005 > 0))

and isnull(ДокСтрокиЗаказ.sp1837, '') <> ''

 group by ДокСтрокиЗаказ.sp1365,ДокСтрокиЗаказ.sp1837


13 сен 11, 22:34    [11272548]     Ответить | Цитировать Сообщить модератору
 Re: Как свернуть пустые строчки в запросе?  [new]
Skiff
Member

Откуда: Москва
Сообщений: 55
Был не внимателен.
Но зато теперь код отформатирован.

RSRuslan
Этот запрос всё толично группирует, но там где водитель пустой а поставщике нет, группируется отдельной строчкой, а хотелось чтобы эти строчки сворачыивались :(


А действительно.
Glory
А что будет с такими данными ?
Поставщик Водитель Количество
Фокстрот Петров 10
Фокстрот 20
Фокстрот Иванов 5
13 сен 11, 22:39    [11272563]     Ответить | Цитировать Сообщить модератору
 Re: Как свернуть пустые строчки в запросе?  [new]
RSRuslan
Member

Откуда: Киев
Сообщений: 173
Skiff
Был не внимателен.
Но зато теперь код отформатирован.

RSRuslan
Этот запрос всё толично группирует, но там где водитель пустой а поставщике нет, группируется отдельной строчкой, а хотелось чтобы эти строчки сворачыивались :(


А действительно.
Glory
А что будет с такими данными ?
Поставщик Водитель Количество
Фокстрот Петров 10
Фокстрот 20
Фокстрот Иванов 5


C такими данными надо поступать так:

Фокстрот Петров 35
Фокстрот Иванов 35

А вообще спасибо, я уже понял, что поставщиков надо группировать отдельно и кним left join-ом добавлять водителя.
Спасибо за помощь ;)
14 сен 11, 12:13    [11274489]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить