Я создаю запрос, который будет естественно возвращать результат, который имеет значения для нескольких столбцов, а также некоторые целочисленные столбцы группировки (указывающие, был ли подзаголовок определенного столбца значения, но это само по себе не относится к моему вопросу). Я хочу наложить ограничение на столбцы группировки этого запроса, который принимает только те строки, в которых столбец группировки n не равен нулю, если все столбцы группировки 1 - ( n -1) также ненулевая.
Кажется, должен быть хороший способ выразить это в SQL, но все, что я могу придумать, это довольно громоздкий
where ((grp1 = 0 AND grp2 = 0 AND grp3 = 0 AND ... AND grpn = 0)
or (grp1 = 1 AND grp2 = 0 AND grp3 = 0 AND ... AND grpn = 0)
or (grp1 = 1 AND grp2 = 1 AND grp3 = 0 AND ... AND grpn = 0)
...
or (grp1 = 1 AND grp2 = 1 AND grp3 = 1 AND ... AND grpn = 1)
, что сложнее понять концепцию, если вы ее читаете, похоже, что движку SQL будет сложнее придумать приличную оптимизацию, и, как правило, он просто забьет журналы, хороня важные биты SQL в шуме.
Поскольку эта концепция кажется не слишком необычной, я надеюсь, что есть лучший способ выразить ее, которая, как правило, будет более краткой и, будем надеяться, более производительной на самом сервере (при условии, что моя наивная версия не будет это эффективно).