26.05.2024 01:31:16
Задача усложнилась тем, что заранее количество контрольных условий не известно, оно может меняться. Поэтому в исходной таблице нет отдельных полей для «КонтрольноеУсловие1», «КонтрольноеУсловие2». Результат проверки находится в одной колонке. Таблица так выглядит:
Изменено: |
|
|
|
26.05.2024 01:40:52
2) Не знаю, как у вас задаются действующие условия, поэтому в примере полагаю, что включены все, какие есть в исходной таблице à читаю их во временную таблицу «втКонтрольки» (вы можете ее сформировать из своего источника)
ВЫБРАТЬ РАЗЛИЧНЫЕ ТЗ.КонтрольноеУсловие КАК КонтрольноеУсловие ПОМЕСТИТЬ втКонтрольки ИЗ ТЗ КАК ТЗ ;
////////////////////////////////////////////////////////////
Изменено: |
|
|
|
26.05.2024 01:41:34
3) Аналогично получаем список всех заказов «втЗаказы».
ВЫБРАТЬ РАЗЛИЧНЫЕ ТЗ.ЗаказКлиента КАК ЗаказКлиента ПОМЕСТИТЬ втЗаказы ИЗ ТЗ КАК ТЗ ;
Изменено: |
|
|
|
26.05.2024 01:43:48
5) Соединяя «все комбинации» с исходной таблицей, получаем «полную таблицу», в которой для каждой комбинации Заказ/Условие определен Результат и если в исходной таблице какой-то комбинации Заказ/Условие не было, то в полной таблице соответствующая ей запись будет иметь значение поля «Результат» = ЛОЖЬ.
ВЫБРАТЬ втВсеКомбинации.ЗаказКлиента КАК ЗаказКлиента, втВсеКомбинации.КонтрольноеУсловие КАК КонтрольноеУсловие, ВЫБОР КОГДА ТЗ.ЗаказКлиента ЕСТЬ NULL ТОГДА ЛОЖЬ ИНАЧЕ ТЗ.Результат КОНЕЦ КАК Результат ПОМЕСТИТЬ втПолнаяТЗ
ИЗ втВсеКомбинации КАК втВсеКомбинации ПОЛНОЕ СОЕДИНЕНИЕ ТЗ КАК ТЗ ПО втВсеКомбинации.ЗаказКлиента = ТЗ.ЗаказКлиента И втВсеКомбинации.КонтрольноеУсловие = ТЗ.КонтрольноеУсловие ;
////////////////////////////////////////////////////////////
Изменено: |
||||
|
|
|||