Страница 1 из 2
Добавлено: 15 ноя 2004, 15:16
AiK
UNION в SQL запросе тебе поможет.
Добавлено: 18 ноя 2004, 13:16
Serafina
Боюсь, что надо заморочится с хранимой процедурой (не знаю только какая СУБД), которая для каждого входа находит следующий за ним выход и в дальнейшем запросе подставит его в соответствующее поле.
А может просто предложить отчет в таком виде
CARD=25
ВХОД: 8.00
ВЫХОД:10.34
ВХОД:15.16
ВЫХОД: 18.01
Надо создать отчет типа учет рабочего времени
Добавлено: 18 ноя 2004, 14:51
AndreykA
Можно попробовать следующим образом:
сначала в хранимой процедуре создать временную таблицу, в которую скинуть все необходимые данные и из нее уже строить отчет.
временная таблица выглядит как необходимо, то есть столбцы - вход, выход, время.
еще желательно в эту таблицу добавить даты этих событий, чтобы по ним отсортировать записи в нужном порядке
Добавлено: 18 ноя 2004, 15:55
Serafina
В таком случае функция будет выглядеть как-то так (не имею возможности сейчас проверить синтаксис):
CREATE FUNCTION f_getExit(@cardNum number,@enter Date)
RETURNS DATE
AS
RETURN SELECT MIN(EVENTS_TIME) FROM Таблица
WHERE CARD=@cardNum
and STATUS='2'
and EVENTS_TIME>=@enter
И далее запрос:
SELECT CARD as CARD, EVENTS_TIME as ENTER, f_getExit(CARD, EVENTS_TIME) as EXIT
FROM Таблица
WHERE
STATUS='1'
AND CARD=номер_карты
Добавлено: 18 ноя 2004, 16:32
AndreykA
только функция будет вот так правильней:
CREATE FUNCTION f_getExit(@cardNum number,@enter Date)
RETURNS DATE
AS
BEGIN
DECLARE @NeedDate DATE
SELECT MIN(EVENTS_TIME) FROM Таблица
WHERE CARD=@cardNum
and STATUS='2'
and EVENTS_TIME>=@enter;
RETURN @NeedDate
END
а вообще должно получиться
посмотрим что ответит OlegK
Добавлено: 18 ноя 2004, 16:34
AndreykA
прошу прощения, забыл дописать:
в строке где стоит select будет так:
SELECT @NeedDate = MIN(EVENTS_TIME) FROM Таблица
Добавлено: 18 ноя 2004, 17:52
AiK
Я бы к исходной таблице добавил бы identity колонку и строил простой запрос с join'ом таблицы саму на себя.