Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Select from ? / 6 сообщений из 6, страница 1 из 1
02.02.2010, 11:24
    #36443928
AndrewT
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select from ?
Господа, каким образом можна из табл.1 получить табл.2 с помощью SQL ?

табл.1
data saldo
01.01.2010 28.00
05.01.2010 10.00
06.01.2010 7.50
08.01.2010 14.00
10.01.2010 18.00

табл.2
data saldo
01.01.2010 28.00
02.01.2010 28.00
03.01.2010 28.00
04.01.2010 28.00
05.01.2010 10.00
06.01.2010 7.50
07.01.2010 7.50
08.01.2010 14.00
09.01.2010 14.00
10.01.2010 18.00

т.е. в принципе нужно проставить остаток предыдущего дня в следующем, при условии что этот следующий день - выходной (он отсутствует в табл.1).
Спасибо за внимание.
...
Рейтинг: 0 / 0
02.02.2010, 13:38
    #36444437
Select from ?
AndrewT,

ИМХО, никак. Для проведения требуемой Вами работы, сервер БД должен поддерживать язык программирования:циклы, перемещения по записям и т.д. (типа PL\SQL или T-SQL).
Если же Вы хотите работать именно в Фоксе, то тогда алгоритм примерно такой :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Select data,Saldo from Табл1 into cursor q1
select q1
scan
d1 = q1.data
s1 = q1.saldo
skip  1 
d2 = q1.data
skip - 1 
d1=d1+ 1 
do while d1<d2
   insert into Табл1 (data,saldo) values (d1,s1)
   d1=d1+ 1 
enddo

select q1
endscan
...
Рейтинг: 0 / 0
02.02.2010, 13:57
    #36444511
Select from ?
Станислав С...кийИМХО, никак. Можно. Но что-то очень лениво самому придумывать структуру таблицы и заполнять тестовыми данными...
...
Рейтинг: 0 / 0
02.02.2010, 14:14
    #36444552
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select from ?
AndrewTГоспода, каким образом можна из табл.1 получить табл.2 с помощью SQL ?

табл.1
data saldo
01.01.2010 28.00
05.01.2010 10.00
06.01.2010 7.50
08.01.2010 14.00
10.01.2010 18.00

табл.2
data saldo
01.01.2010 28.00
02.01.2010 28.00
03.01.2010 28.00
04.01.2010 28.00
05.01.2010 10.00
06.01.2010 7.50
07.01.2010 7.50
08.01.2010 14.00
09.01.2010 14.00
10.01.2010 18.00

т.е. в принципе нужно проставить остаток предыдущего дня в следующем, при условии что этот следующий день - выходной (он отсутствует в табл.1).
Спасибо за внимание.
Если у вас есть таблица "календарь" в которой есть записи для ВСЕХ дней диапазона запроса (с указанием праздник это или нет), то можно одним запросом.
С уважением, Алексей
...
Рейтинг: 0 / 0
02.02.2010, 15:02
    #36444707
AndrewT
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select from ?
Aleksey-K
Если у вас есть таблица "календарь" в которой есть записи для ВСЕХ дней диапазона запроса (с указанием праздник это или нет), то можно одним запросом.
С уважением, Алексей

Да, в общем случае такая таблица есть, там правда перечислены ВСЕ дни в году (без указаний выходных). А если бы была и с указаниями, как в таком случае? Можно пример?
Спасибо
...
Рейтинг: 0 / 0
02.02.2010, 15:14
    #36444752
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select from ?
AndrewTДа, в общем случае такая таблица есть, там правда перечислены ВСЕ дни в году (без указаний выходных). А если бы была и с указаниями, как в таком случае? Можно пример?
Спасибо
Ну, сам принцип описан здесь

Выбрать из дочерней таблицы записи с максимальной датой

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

В целом, идея в том, чтобы из "дочерней" таблицы взять запись с датой ближайшей равной или меньшей даты главной таблицы
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Select from ? / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]