Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Избавиться от избыточности при объединении таблицы с собой  [new]
Новый пользователь
Guest
Здравствуйте.
Как привести такую таблицу:
xdateordnumxdate2ordnum2
nullnull01.01.20131
nullnull01.01.20132
nullnull01.01.20133
01.01.20131nullnull
01.01.20132nullnull
nullnull01.01.20134
nullnull01.01.20135
01.02.20131nullnull
01.02.20132nullnull
01.03.20131nullnull
01.03.20132nullnull
01.04.20131nullnull
01.04.20132nullnull
nullnull01.04.20131
nullnull01.04.20132


к такому виду:
xdateordnumxdate2ordnum2
01.01.2013101.01.20131
01.01.2013201.01.20132
nullnull01.01.20133
nullnull01.01.20134
nullnull01.01.20135
01.02.20131nullnull
01.02.20132nullnull
01.03.20131nullnull
01.03.20132nullnull
01.04.2013101.04.20131
01.04.2013201.04.20132


То есть сгруппировать по месяцу xdate и избавиться от избыточности.
15 ноя 13, 13:25    [15135533]     Ответить | Цитировать Сообщить модератору
 Re: Избавиться от избыточности при объединении таблицы с собой  [new]
Glory
Member

Откуда:
Сообщений: 104760
Из одной таблицы делаете две "таблицы" - в одной все записи с ненулевым xdate, во второй - с ненулевым xdate2
Потом соединяете по дате и ordnum
15 ноя 13, 13:42    [15135731]     Ответить | Цитировать Сообщить модератору
 Re: Избавиться от избыточности при объединении таблицы с собой  [new]
Новый пользователь
Guest
А если всё хранится в одной таблице:
xdateordnumфлаг
01.01.20131R
01.01.20132R
01.01.20133R
01.01.20131L
01.01.20132L
01.01.20134R
01.01.20135R
01.02.20131L
01.02.20132L
01.03.20131L
01.03.20132L
01.04.20131L
01.04.20132L
01.04.20131R
01.04.20132R


как привести к конечному виду(конечный вид - вторая таблица в первом сообщении)?
15 ноя 13, 14:00    [15135923]     Ответить | Цитировать Сообщить модератору
 Re: Избавиться от избыточности при объединении таблицы с собой  [new]
Glory
Member

Откуда:
Сообщений: 104760
Новый пользователь
как привести к конечному виду

Точно так же - формируете два набора и соединяете
15 ноя 13, 14:02    [15135939]     Ответить | Цитировать Сообщить модератору
 Re: Избавиться от избыточности при объединении таблицы с собой  [new]
Новый пользователь
Guest
Когда соединяю, получается либо первый вариант с null, либо вообще без записей.

from table t
inner join table t2 on
	year(t.XDATE) = year(t2.XDATE) and
	month(t.XDATE) = month(t2.XDATE) and
	t.флаг= 'R' and
	t2.флаг= 'L'


Как правильно соединить?
15 ноя 13, 14:12    [15136079]     Ответить | Цитировать Сообщить модератору
 Re: Избавиться от избыточности при объединении таблицы с собой  [new]
Glory
Member

Откуда:
Сообщений: 104760
from (select *) as nr from table where флаг= 'R' ) t1
full outer join (select * from table where флаг= 'L' ) t2
on t1.XDATE = t2.XDATE and t1.ordnum = t2.ordnum
15 ноя 13, 14:18    [15136164]     Ответить | Цитировать Сообщить модератору
 Re: Избавиться от избыточности при объединении таблицы с собой  [new]
Новый пользователь
Guest
Glory, спасибо, помогло. Осталось отсортировать нормально.
Счастья вам. Храни вас Господь.
15 ноя 13, 14:31    [15136365]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить