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

Откуда:
Сообщений: 2
Добрый день!

Помогите решить проблему. Есть 3 таблицы (представления, но не суть).
в одной хранится информация об организациях, во-второй некие отчеты организации за 2010 год, в третьей отчеты за 2011 год.
Количество отчетов в 2010 и 2011 годах разное.
Объединяем эти таблицы через JOIN (некоторые неважные строки промущены):

SELECT 
	   [dbo].[0000org].[Организация]
          ,[dbo].[0000org].[Код ОКПО]      
     
          ,[dbo].[2010f13B].[Nстроки]
          ,[dbo].[2010f13B].[КодП]
          ,[dbo].[2010f13B].[НазвП] 
          ,[dbo].[2010f13B].[data1]
          ,[dbo].[2010f13B].[data2]    

          ,[dbo].[2011f13BA].[Nстроки]
          ,[dbo].[2011f13BA].[КодП]
          ,[dbo].[2011f13BA].[НазвП]
          ,[dbo].[2011f13BA].[data3]
          ,[dbo].[2011f13BA].[data4]
      
  FROM [dbo].[0000org]

LEFT JOIN [dbo].[FORMS]
	on [dbo].[FORMS].[idp] = [dbo].[0000org].[id]
LEFT JOIN [dbo].[2010f13B]
	on [dbo].[2010f13B].[f13IDf] = [dbo].[FORMS].[id]
FULL JOIN dbo].[2011f13BA]
	on [dbo].[2011f13BA].[f13IDf] = [dbo].[FORMS].[id]


получаем результат запроса в таком виде:

Организация| 00139399 | NULL | NULL | NULL | NULL | NULL | 600 | 0 | 0 | 0 | 0
Организация| 00139399 | NULL | NULL | NULL | NULL | NULL | 601 | 1111111 | Хранилище | 0 | 0
Организация| 00139399 | 600 | 0 | 0 | 0 | 0 | NULL | NULL | NULL | NULL | NULL
Организация| 00139399 | 601 | 1111111 | Хранилище | 0 | 0

что можно сделать, чтобы результат запроса выглядел так:

Организация| 00139399 | 600 | 0 | 0 | 0 | 0 | 600 | 0 | 0 | 0 | 0
Организация| 00139399 | 601 | 1111111 | Хранилище | 0 | 0 | 601 | 1111111 | Хранилище | 0 | 0

т.е. как-бы склеил строки (убрав NULL и дублирование) в которых связка значений [Организация]-[КодП]-[НазвП] в таблицах 2 и 3 одинакова.

Спасибо!
11 май 12, 19:07    [12538690]     Ответить | Цитировать Сообщить модератору
 Re: Объединение таблиц без пропусков  [new]
джойн
Guest
джойниться по всем нужным полям?
11 май 12, 19:14    [12538719]     Ответить | Цитировать Сообщить модератору
 Re: Объединение таблиц без пропусков  [new]
maxim317
Member

Откуда:
Сообщений: 2
все что может быть ключевыми полями все включено в join-ы. остальное данные
11 май 12, 23:03    [12539508]     Ответить | Цитировать Сообщить модератору
 Re: Объединение таблиц без пропусков  [new]
aleks2
Guest
maxim317
все что может быть ключевыми полями все включено в join-ы. остальное данные

1. Вот ведь, смешной человек... как написали - так сервер и соединил.
Телепатическая приставка к MS SQL еще не прошла стадию бета-тестирования.

2. Если нада НЕ так - разъясните серверу принцип "как-бы склеил строки" - он склеит.
12 май 12, 06:24    [12539997]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить