Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS SQL Server > Запрос


Автор: maxar 23.6.2005, 10:42
помогите написать запрос на поиск повторяющихся значений и выборку среди повторяющихся значений те строки, в которых значение даты наиболее близко к текущей дате

Автор: AntonSaburov 23.6.2005, 10:59
Так повторяющиеся или близкие ? И насколько блихкие ? Сформулируй пожалуйста поточнее.

Автор: Vit 23.6.2005, 15:39
Повторяющие:

Код

Select myField, count(*) From MyTable
Group by myField
Having count(*) >1




Автор: Papirus 23.6.2005, 17:07
Цитата(maxar @ 23.6.2005, 10:42)
наиболее близко к текущей дате

Это, наверное, максимальное значение даты в случае даты меньше текущей и минимальное в случае даты больше текущей? Найти эти даты и минимальная разница между ней и текуще по модулю = искомой. Это теоретически, а практически
подзапрос Vit даст только повторяющиеся даты из них двумя вложенными селектами получить минимальную и максим альную относительно текущей... пардон должен уходить

Автор: Vit 23.6.2005, 19:03
Цитата(Papirus @ 23.6.2005, 08:07)
подзапрос Vit даст только повторяющиеся даты из них двумя вложенными селектами получить минимальную и максим альную относительно текущей... пардон должен уходить



Достаточно по модулю взять минимальную разницу между датами...
Добавлено @ 19:05
PS. Ответ не дал только потому что не знал какое поле с датой сравнивать - то что взято из подселекта или какое-то другое связанное, во втором случе запрос получится изрядно навороченный...

Автор: Paradox 24.6.2005, 13:19
Код

Select myDate, count(1) From MyTable
where MyDate-sysdate<=значение твое
Group by myDate
Having count(1) >1


так разве не пойдет
давно не работал с MS SQL
так что точно не вспомню функции такущей даты, вычитания дат и абсолютного значения


Добавлено @ 13:21
а нет не пойдет...
сам уже понял - можно потерять кое что
лучше наверное вот так
Код

select MyDate from (
Select myDate, count(1) From MyTable
Group by myDate
Having count(1) >1) where MyDate-sysdate<=значение твое

Автор: Vit 24.6.2005, 15:11
Цитата(Paradox @ 24.6.2005, 04:19)
where MyDate-sysdate<=значение твое


Здесь нужен модуль разности а не реальная разность, кроме того запрос вывеведет не одно значение наиболее близкое, а несколько или не выведет вообще... В общем внешняя функция тоже должна быть аггрегированной

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)