перекрестная таблица для двух выбранных показателей.

zVINNYz
Дата: 23.12.2012 11:21:28
Есть таблица первый столбец - цифр код скважины, остальные 8 - количество дефектов определенного рода (целое число).
Пользователь выбирает два любых и нажимает кнопку "сделать".
Подскажите как сделать вывод в курсор:
вначале -количество скважин без дефектов по выбранным, за тем по очереди количество каждой комбинации количества дефектов.

Пример таблицы
KOD_SKV GERM KOMPL POLN KM UST FLAN SOST UPRAV
05.0 0 0 0 0 1 0 0 1
AndreTM
Дата: 24.12.2012 02:52:20
Вместо того, чтобы заниматься непосредственно решением - вы начинаете искать средства для выхода из того угла, куда сами себя и загоняете Просто вы не уточнили, что эту таблицу придумали сами...

СУБД - это не Офис. И не ЯП. Базу нужно сначала проектировать, а затем только реализовывать функционал. Вернее, так: структура проектируется, исходя из функционала решаемой задачи. Впрочем, о чём я...

По идее, ваша база (на данном этапе) должна иметь три таблицы:
- таблица Скважин, содержащая коды скважин и, например, их обозначение, наименование
- таблица Дефектов, содержащая коды дефектов и, например, их обозначение, наименование
- таблица ДефектовСкважин, которая будет содержать КодСкважины, КодДефекта, Значение(количество данных дефектов на данной сважине), Дату(на которую приведено значение)
При такой структуре, ваши выборки решаются очень простыми запросами...
zVINNYz
Дата: 24.12.2012 17:58:03
Спасибо, Проблема что "умные люди" сделали так, таблица ужасна, а мое знание foxpro еще хуже.
Буду переделывать)!
Станислав С...кий
Дата: 26.12.2012 14:44:06
zVINNYz
Спасибо, Проблема что "умные люди" сделали так, таблица ужасна, а мое знание foxpro еще хуже.
Буду переделывать)!


Не спеши переделывать... Если это были на самом деле умные люди, то в один прекрасный момент может оказаться, что эта таблица - часть OLAP-системы... Тогда для нее допустима некоторая денормализация ради ускорения выборок на больших объемах данных...
Надо сначала понять, что перед тобой: неверное проектирование OLTP-системы или OLAP- куб...

Второй вариант решения проблемы (если таки я прав): можно формировать динамический запрос типа:
select <поле группировки>, sum(<поле с количеством дефектов>) as cnt_defect 
from <таблица> 
where <условие отбора> 
group by <поле группировки>

и выполнять его, например, в цикле, сливая накопленные данные в курсор. На заполненном промежуточном курсоре уже и строить отчет...
zVINNYz
Дата: 28.12.2012 22:36:47
Станислав С...кий,

Спасибо.
AndreTM
Дата: 28.12.2012 23:08:43
Дополню тогда.
Если исходная таблица всё же денормализована со смыслом - то кто вам запрещает (тем более, что мы - в FoxPro), и, учитывая предыдущее мнение, - слить курсор, используя SELECT IIF() или SELECT ... UNION SELECT ...