Форум: "Базы";
Текущий архив: 2002.01.24;
Скачать: [xml.tar.bz2];
Внизкак вытащить из таблицы? Найти похожие ветки
← →
sasa_ch (2001-12-20 13:02) [0]Добрый день!
Не смогли бы Вы помочь в построении хитрого Select"a
Как мне из таблицы (2 столбца: данные и время вставки(DateTime))вытащить во View последние записи каждого часа каждого дня ,
т.е.какой период времени (в часах) в таблице столько и вытащить записей (последних в каждом часе)...
У меня sql-server 7.0
Мыльте если кто что думает
← →
TSV (2001-12-20 16:54) [1]Может быть во так:
select a1.street, datepart(yyyy, a1.date_in) as god, datepart(mm, a1.date_in) as mes, (datepart(dd, a1.date_in)) as den,
datepart(hh, a1.date_in) as chas, datepart(mi, a1.date_in) as minut from apartments a1
where datepart(mi, a1.date_in) =
(select max(datepart(mi, a2.date_in)) from apartments a2 where
datepart(yyyy, a1.date_in) = datepart(yyyy, a2.date_in) and
datepart(mm, a1.date_in) = datepart(mm, a2.date_in) and
datepart(dd, a1.date_in) = datepart(dd, a2.date_in) and
datepart(hh, a1.date_in) = datepart(hh, a2.date_in) and
datepart(mi, a1.date_in) = datepart(mi, a2.date_in))
group by street, datepart(yyyy, a1.date_in), datepart(mm, a1.date_in), (datepart(dd, a1.date_in)),
datepart(hh, a1.date_in), datepart(mi, a1.date_in)
order by datepart(yyyy, a1.date_in), datepart(mm, a1.date_in), (datepart(dd, a1.date_in)),
datepart(hh, a1.date_in), datepart(mi, a1.date_in)
Удачи.
← →
Mick (2001-12-20 17:25) [2]А вот так намного короче:
Create View MyView as
Select Year(DATEFIELD),Month(DATEFIELD),DAY(DATEFIELD), DatePart(hh,DATEFIELD), MAX(DATEFIELD) ADate
From MYTABLE
GROUP BY Year(DATEFIELD),Month(DATEFIELD),DAY(DATEFIELD), DatePart(hh,DATEFIELD)
Select DATEFIELD,ANYOTHERFIELD From MyTable
Where DATEFIELD IN (Select ADAte From MyView)
← →
TSV (2001-12-20 17:27) [3]Но одна запись для каждого часа будет только тогда, когда записи в таблицу будут вставляться не чаще одной минуты.
← →
Mick (2001-12-20 17:34) [4]Я очень сомневаюсь в этом
← →
TSV (2001-12-20 17:39) [5]> Mick
Да это я реплику кинул к своему же примеру.
Твой способ конечно лучше.
← →
sasa_ch (2001-12-21 09:13) [6]Большое спасибо за помощь!
Просто нет практического опыта работы с SQL(да и вообще с базами), поэтому и....
Best regards.
← →
SergSuper (2001-12-21 10:31) [7]2Mick
Можно еще короче
select * from t t where not exists(select * from t x where
datediff(hh,t.date, "20010101")=datediff(hh,x.date, "20010101") and
t.date<x.date)
или если нужна только дата можно через group by
(автору вороса я уже отправил)
← →
Mick (2001-12-21 10:59) [8]>SergSuper
Только мой план дешевле и не используется связанный подзапрос
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.01.24;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.004 c