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

Откуда:
Сообщений: 12
Здравствуйте.
Есть такая табличка

create table #MP2
(
MP2_ID int,
MP2_PriceNew money,
MP2_PriceOld money,
MP2_Date smalldatetime
)

insert table #MP2 values(1, 100, 200, '20110201')
insert table #MP2 values(2, 300, 400, '20110301')
insert table #MP2 values(2, 300, 400, '20110501')
insert table #MP2 values(3, 500, 600, '20110201')
insert table #MP2 values(3, 500, 600, '20110401')
insert table #MP2 values(3, 500, 600, '20110601')

Необходимо получить таблицу с структурой #MP2 + поле MP2_Date2 smalldatetime, которое содержит ближайшее по MP2_Date для
одного MP2_ID.
Т.е.
1, 100, 200, '20110201', NULL
2, 300, 400, '20110301', NULL
2, 300, 400, '20110501', '20110301'
3, 500, 600, '20110201', NULL
3, 500, 600, '20110401', '20110201'
3, 500, 600, '20110601', '20110401'.

Я в SQL новичек, а время ограничено ((( Заранее спасибо )
23 апр 12, 11:54    [12455792]     Ответить | Цитировать Сообщить модератору
 Re: Объединение таблицы самой с собой  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
Воротник, а если есть несколько записей с одинаковым MP2_ID и MP2_Date? Тогда как?
Вообще вам помогут ROW_NUMBER() и/или OUTER APPLY + TOP 1
23 апр 12, 11:59    [12455837]     Ответить | Цитировать Сообщить модератору
 Re: Объединение таблицы самой с собой  [new]
Воротник
Member

Откуда:
Сообщений: 12
Извините, не уточнил. Связка MP2_ID и MP2_Date уникальна.
23 апр 12, 12:01    [12455858]     Ответить | Цитировать Сообщить модератору
 Re: Объединение таблицы самой с собой  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
Воротник
Я в SQL новичек, а время ограничено

За полгода нашли где BOL живет? Что именно не ясно в моем ответе?
23 апр 12, 12:02    [12455866]     Ответить | Цитировать Сообщить модератору
 Re: Объединение таблицы самой с собой  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
Заодно можете поглядеть в факе на счет накопительного итога, там с примерами решается похожая задача.
23 апр 12, 12:04    [12455876]     Ответить | Цитировать Сообщить модератору
 Re: Объединение таблицы самой с собой  [new]
Strangers
Member [заблокирован]

Откуда: Україна
Сообщений: 2613
IF OBJECT_ID ('TempDB..#MP2') IS NOT NULL DROP TABLE #MP2
create table #MP2
(
MP2_ID int,
MP2_PriceNew money,
MP2_PriceOld money,
MP2_Date smalldatetime
)

insert INTO #MP2 values(1, 100, 200, '20110201')
insert INTO #MP2 values(2, 300, 400, '20110301')
insert INTO #MP2 values(2, 300, 400, '20110501')
insert INTO #MP2 values(3, 500, 600, '20110201')
insert INTO #MP2 values(3, 500, 600, '20110401')
insert INTO #MP2 values(3, 500, 600, '20110601')


;WITH asd as
(
	SELECT *
	FROM #MP2
)
SELECT *,
		(SELECT top 1 MP2_Date FROM asd WHERE MP2_ID = k.MP2_ID and MP2_Date < k.MP2_Date)
FROM asd k
23 апр 12, 13:25    [12456407]     Ответить | Цитировать Сообщить модератору
 Re: Объединение таблицы самой с собой  [new]
Воротник
Member

Откуда:
Сообщений: 12
Спасибо.
23 апр 12, 15:12    [12457311]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить