powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Опять Select неполучается - помогите
10 сообщений из 10, страница 1 из 1
Опять Select неполучается - помогите
    #33665077
S866
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте господа!
не могу составить Select.
есть табличка:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
name	id	sd1		sd2		intper
qqq	15	0		-4982,86		24075
aaa	21	75326,12		75326,12		24061
aaa	21	75326,12		0		24062
aaa	21	75326,12		75326,12		24063
aaa	21	75326,12		75326,12		24064
aaa	21	75326,12		75326,12		24065
aaa	21	75326,12		75326,12		24066
aaa	21	75326,12		75326,12		24067
aaa	21	75326,12		75326,12		24068
aaa	21	75326,12		75326,12		24069
aaa	21	75326,12		75326,12		24070
aaa	21	75326,12		75326,12		24071
aaa	21	75326,12		75326,12		24072
aaa	21	75326,12		75326,12		24073
aaa	21	75326,12		0		24074
bbb	27	0		-87089,18	 24062
bbb	27	-87089,18	-87089,18	 24063
bbb	27	-87089,18	0		24064
ccc	29	0		225000		24064
ccc	29	225000		225000		24065
ccc	29	225000		256200		24066
ccc	29	256200		-150150		24067
ccc	29	-150150		-150150		24068
ccc	29	-150150		0		24069
ccc	29	0		8224,6		24070
ccc	29	8224,6		0		24071
ddd	33	0		-468863,04	24063
ddd	33	-468863,04	499267,75	24064
ddd	33	499267,75	-2302299,46	24065
ddd	33	-2302299,46	-1752299,46	24066
ddd	33	-1752299,46	-1252299,46	24067
ddd	33	-1252299,46	-173297,34	24068
ddd	33	-173297,34	1826702,66	24069
ddd	33	1826702,66	266551,88	24070
ddd	33	266551,88	-2574716,25	24071
ddd	33	-2574716,25	-3540577,27	24072
ddd	33	-3540577,27	-3040577,27	24073
ddd	33	-3040577,27	-3040577,27	24074
ddd	33	-3040577,27	-752309,73	24075
где Name - имя организации id - ее уникальный номер, Sd1 - сальдо на начало расчетного периода, sd2 - сальдо на конец расчетного периода intper - количество месяцев от рождества Христова (12*год+месяц) - номер периода
необходимо выбрать все организации с сальдом SD1 стоящим в строке с минимальным intper для данной организации.
т.е. должно получиться такое

Код: plaintext
1.
2.
3.
4.
5.
name	id	sd1		sd2		intper
qqq	15	0		-4982,86		24075
aaa	21	75326,12		75326,12		24061
bbb	27	0		-87089,18	24062
ccc	29	0		225000		24064
ddd	33	0		-468863,04	24063
Помогите нарисовать Select из этой таблицы - что то у меня неполучается.
Заранее спасибо !
...
Рейтинг: 0 / 0
Опять Select неполучается - помогите
    #33665184
Сергей А.М.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
select a.name,a.sd1,a.sd2,a.intper from <<table>> a inner join (select id,min(intper) as intper from <<table>> group by id) b on a.id=b.id and a.intper=b.intper
...
Рейтинг: 0 / 0
Опять Select неполучается - помогите
    #33666088
S866
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо! буду пробовать
...
Рейтинг: 0 / 0
Опять Select неполучается - помогите
    #33666159
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если для каждой организации есть только одна запись для одного и того же intper и ваша версия VFP поддерживает корреляционны подзапросы, то можно и так:

Код: plaintext
1.
2.
3.
4.
select t.name, t.id, t.sd1, t.sd2, t.intper
from table t 
where t.intper = (select min(o.intper) from table o where t.id = o.id)
order by t.id
С уважением, Алексей
...
Рейтинг: 0 / 0
Опять Select неполучается - помогите
    #33667614
S866
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо Aleksey-K - VFP 9 ка - думаю с Вашей помощью все у меня получится
...
Рейтинг: 0 / 0
Опять Select неполучается - помогите
    #33667819
S866
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Результат:
Есть курсор O601per
сделал

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
USE DBF("o601per") AGAIN IN  0  ALIAS o601perdubl

&& На начало периода выборки
select *;
from o601per ;
where o601per.intper = (select min(o601perdubl.intper) from o601perdubl where o601per.id = o601perdubl.id);
order by o601per.id into cursor nachper 

&& на конец периода выборки
select *;
from o601per ;
where o601per.intper = (select max(o601perdubl.intper) from o601perdubl where o601per.id = o601perdubl.id);
order by o601per.id into cursor konper
Всем спасибо за помощь!!!
...
Рейтинг: 0 / 0
Опять Select неполучается - помогите
    #33668036
Сергей А.М.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Наверно, можно упростить
Код: plaintext
1.
2.
3.
4.
&& На начало периода выборки
&& на конец периода выборки
select * from o601per A ;
where intper = (select max(intper) from o601per where id = A.id);
order by id into cursor konper
...
Рейтинг: 0 / 0
Опять Select неполучается - помогите
    #33670970
S866
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Сергей А.М.
Код: plaintext
1.
2.
3.
4.
5.
Наверно, можно упростить
&& На начало периода выборки
&& на конец периода выборки
select * from o601per A ;
where intper = (select max(intper) from o601per where id = A.id);
order by id into cursor konper


Спасибо тоже работает правильно .
Если не трудно просветите а что такое A - и как это работат.
Вроде бы таблица одна откуда А берется. В хелпе вроде нет ничего про такое объявление нового курсора?
...
Рейтинг: 0 / 0
Опять Select неполучается - помогите
    #33671035
Сергей А.М.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
S8662 Сергей А.М.
Код: plaintext
1.
2.
3.
4.
Наверно, можно упростить
&& на конец периода выборки
select * from o601per A ;
where intper = (select max(intper) from o601per where id = A.id);
order by id into cursor konper


Спасибо тоже работает правильно .
Если не трудно просветите а что такое A - и как это работат.
Вроде бы таблица одна откуда А берется. В хелпе вроде нет ничего про такое объявление нового курсора?
В конструкции
Код: plaintext
"... FROM o601per A ..."
'A' является алиасом таблицы o601per, область действия которого данный SQL-запрос и его подзапросы. Также возможно
Код: plaintext
"... FROM o601per A, o601per A2  ..."
и т.д.
Кстати, при таком использовании фокс неявно выполнит
Код: plaintext
USE o601per IN 0 ALIAS o601per
, поэтому даже после закрытия курсора konper, таблица o601per будет открыта.
...
Рейтинг: 0 / 0
Опять Select неполучается - помогите
    #33671205
S866
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо понял!
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Опять Select неполучается - помогите
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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