powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Группировка
10 сообщений из 10, страница 1 из 1
Группировка
    #37901430
zaq12wsx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
por fam sum1 sum2
5204 КОДЬ 1276,91 1276,91
5204 КОДЬ 1276,91 1276,91
5186 ЕГОРОВ 18776,84 19961,31
5051 ТАРАСОВ 57614,63 57999,94
5051 ТАРАСОВ 57614,63 57999,94
5055 ЛУКИНА 8677,61 20757,87
5055 ЛУКИНА 8677,61 20757,87
5055 ЛУКИНА 8677,61 20757,87
5056 НОВИКОВА 10129,81 10129,81
5056 НОВИКОВА 10129,81 10129,81

Есть таблица (подобие). Мне необходимо расположить данные по таблицам, а именно, если por встречается 1 раз, то в табл1, если 2 раза, то в табл2 и т.д.

Прошу помочь!
...
Рейтинг: 0 / 0
Группировка
    #37901442
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что именно не получается?
...
Рейтинг: 0 / 0
Группировка
    #37901454
zaq12wsx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima TЧто именно не получается?

честно говоря я вообще не понимаю как это реализовать.
я создала столбец kol, записала туда 1.
Проиндексировала таблицу по полю por.
хотела использовать total для суммирования, чтоб он мне проставил в kol сколько раз повторяется записи, но не выходит. Если бы вышло, я бы сохранила результаты в таблицы, а там удалила данные. Но запрос total не сформулировать как нужно. Хотя может он тут неуместен.
...
Рейтинг: 0 / 0
Группировка
    #37901494
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Делаем выборку во временную таблицу, подсчитывая количество дублей

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
select ;
    por, ;
    fam, ;
    sum1, ;
    sum2, ;
    count(*) as cnt ;
into cursor CurResult ;
from MyTab ;
group by ;
    por, ;
    fam, ;
    sum1, ;
    sum2



Теперь можно работать с этой временной таблицей, поскольку у нее появился дополнительный столбец cnt, в котором указано, сколько раз в исходной таблице встречалась данная запись
...
Рейтинг: 0 / 0
Группировка
    #37901532
alextashk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В дополнение к ВладимируМ

2 zaq12wsx

теперь делаете скан по полученному курсору
и выборками разбросаете данные по нужным таблицам
...
Рейтинг: 0 / 0
Группировка
    #37901545
zaq12wsx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМДелаем выборку во временную таблицу, подсчитывая количество дублей

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
select ;
    por, ;
    fam, ;
    sum1, ;
    sum2, ;
    count(*) as cnt ;
into cursor CurResult ;
from MyTab ;
group by ;
    por, ;
    fam, ;
    sum1, ;
    sum2



Теперь можно работать с этой временной таблицей, поскольку у нее появился дополнительный столбец cnt, в котором указано, сколько раз в исходной таблице встречалась данная запись

Простите за глупый вопрос, но уж вот так((((только начинаю ковырять язык
Согласно вашему алгоритму я должна написать след.образом:

SELECT <перечисляю поля> count ALL as <имя новой временной табл> into cursor CurResult from <имя моей таблицы>
...
Рейтинг: 0 / 0
Группировка
    #37901554
zaq12wsx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alextashkВ дополнение к ВладимируМ

2 zaq12wsx

теперь делаете скан по полученному курсору
и выборками разбросаете данные по нужным таблицам

хотелось бы получить не только словесное объяснение, но и команды, уж простите за наглость.
...
Рейтинг: 0 / 0
Группировка
    #37901891
alextashk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
За спрос денег не берут, берут за программы

Код: 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.
select ;
    por, ;
    fam, ;
    sum1, ;
    sum2, ;
    count(*) as cnt ;
into cursor CurResult ;
from MyTab ;
group by ;
    por, ;
    fam, ;
    sum1, ;
    sum2

SELECT curResult

SCAN

  lcFile = 'file'+LTRIM(STR(cnt))

  SELECT * ;
  FROM myTab;
  WHERE myTab.por = CurResult.por;
  INTO TABLE (lcFile)

ENDSCAN
...
Рейтинг: 0 / 0
Группировка
    #37902013
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
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.
* Устраняем все дубли и подсчитываем их количество
select ;
    por, ;
    fam, ;
    sum1, ;
    sum2, ;
    count(*) as cnt ;
into cursor CurResult ;
from MyTab ;
group by ;
    por, ;
    fam, ;
    sum1, ;
    sum2

* Определяем список таблиц, которые надо будет создать
* по количеству уникальных значений поля cnt

select distinct cnt ;
into cursor curTablesNum nofilter ;
from CurResult

* Собственно создание таблиц
select curTablesNum
scan
    * Имя создаваемой таблицы
    lcTableName = 'tabCnt_'+ltrim(str(curTablesNum.cnt))

    * Создание новой таблицы
    select 
        por, ;
        fam, ;
        sum1, ;
        sum2 ;
    into table (lcTableName) ;
    from CurResult ;
    where cnt = curTablesNum.cnt
endscan



В данном случае в создаваемых таблицах будут только уникальные записи. Не повторяющиеся. Если же в каждой таблице надо создать столько дублей, сколько было в исходной таблице, то код будет немного другой. В итоговой выборке надо будет объединять по Inner Join исходную таблицу и таблицу CurResult, накладывая ограничение на поле cnt. Ну, или "тупо" сделать цикл for..endfor и повторить закачку из CurResult столько раз, сколько дублей должно быть.
...
Рейтинг: 0 / 0
Группировка
    #37903311
zaq12wsx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВСЕМ БОЛЬШОЕ СПАСИБО!!!! Все получилось в лучшем виде))))
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Группировка
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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