Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.01.24;
Скачать: CL | DM;

Вниз

как вытащить из таблицы?   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.01 c
1-75615
swr
2002-01-08 10:26
2002.01.24
меню Project/Resourses в Delphi IDE


7-75697
REL
2001-10-11 19:14
2002.01.24
Модемы


1-75623
Belov
2002-01-08 15:43
2002.01.24
Изменение размеров картинки


3-75470
vano
2001-12-07 16:21
2002.01.24
try except


1-75606
ЮРИЙ_К
2002-01-04 10:37
2002.01.24
Правила хорошего тона при работе с INI-файлами ???