Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выбрать данные, Даты, которые входят в диапазон 
V
    Опции темы
Voldemar2004
  Дата 27.2.2013, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

Репутация: нет
Всего: 23



Есть такой результат выборки:

id                 pku         start                   begin
372849    106844    26.04.2011    11.05.2011
519235    106844    22.01.2011    30.01.2012
340293    106844    13.10.2010    06.11.2010
334471    106844    24.06.2010    05.08.2010
531594    106844    05.05.2012    31.05.2012
393908    106844    18.10.2011    03.11.2011
381770    106844    20.07.2011    29.07.2011


Надо получить вот такую таблицу:

id                 pku         start                   begin
519235    106844    22.01.2011    30.01.2012
372849    106844    26.04.2011    11.05.2011
393908    106844    18.10.2011    03.11.2011
381770    106844    20.07.2011    29.07.2011


То есть чтобы даты с мелкими диапазонами:

372849    106844    26.04.2011    11.05.2011
393908    106844    18.10.2011    03.11.2011
381770    106844    20.07.2011    29.07.2011

входили внутрь даты с большИм диапазоном:
519235    106844    22.01.2011    30.01.2012

А остальные даты просто отсекались:
334471    106844    24.06.2010    05.08.2010

Это сообщение отредактировал(а) Voldemar2004 - 27.2.2013, 14:55

Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  RES.zip 4,02 Kb


--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
Akina
Дата 27.2.2013, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Диапазоны всегда входят один в другой, или возможно частичное перекрытие? 
Если возможно - каков должен быть результат?
А если такого не бывает - то можно тупо

Код

select t1.* 
from table t1
where not exists
(
  select t2.id
  from table t2
  where t1.start<=t2.start and t1.end>=t2.end and t1.pku=t2.pku
);


Добавлено @ 15:02
PS. Искренне порадовали имена полей границ диапазона - start и begin... прям-таки масло масляное...



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Voldemar2004
Дата 27.2.2013, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

Репутация: нет
Всего: 23



Цитата(Akina @  27.2.2013,  16:01 Найти цитируемый пост)
PS. Искренне порадовали имена полей границ диапазона - start и begin... прям-таки масло масляное...


Придумал для примера smile В реальной базе не такие имена полей  smile

Добавлено через 45 секунд
Да, надо было start, end  smile 


--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
Voldemar2004
  Дата 27.2.2013, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

Репутация: нет
Всего: 23



Вот, работает:

Код

select id, pku, convert(varchar, start, 104) as [начало], convert(varchar, stop, 104) as [конец]
from [master].[dbo].[table]
where exists
(
      select *
      from [master].[dbo].[table] as T
      where [table].start < T.start and [table].stop > T.stop and [table].pku=T.pku
)

union 

select id, pku, convert(varchar, start, 104) as [начало], convert(varchar, stop, 104) as [конец]
from [master].[dbo].[table]
where exists
(
      select *
      from [master].[dbo].[table] as T
      where [table].start > T.start and [table].stop < T.stop and [table].pku=T.pku
)

order by [конец] desc


 smile 

Импортировать из CSV-файла данные в таблицу:

Код

BULK INSERT [master].[dbo].[table] FROM 
'e:\DB.csv'
WITH (
   FIELDTERMINATOR = ',',
   ROWTERMINATOR = '\n'
)



--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.0436 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.