Обычно в таблице нет двух столбцов, один из которых называется ON, а другой вызывается OFF, в таблице, поскольку они обычно являются взаимоисключающими состояниями, а два столбца позволяют им быть True. Обычно вам нужен только один столбец с именем ON, который может быть установлен на False, чтобы указать off-state. Итак, что здесь происходит с вашим столом, не совсем понятно.
Если включено и выключено, действительно являются взаимоисключающими состояниями, и вы просто делаете что-то по-дурацко, тогда лучший способ попасть в строки результатов, которые находятся в состоянии состояния, и строки, находящиеся в выключенном состоянии, использовать UNION.
select {desired columns for rows that are on), sum(value) as YourSum
where on=true
group by {group-by column(s)}
UNION
select {desired columns for rows that are off}, sum(value) as YourSum
where off=true
group by {group-by column(s)}
Вы также можете создать два постоянных взглядов, один для On строк, а другой для Off Ряды и UNION выбирает против них.
Если вы хотите, отдельные столбцов, используя вышеупомянутую UNION подход, вы можете создать фиктивный столбец, подзапрос, и кормить суммы через фиктивную совокупность MAX() функцию:
select name, max(OnSum) as OnSummed, max(OffSum) as OffSummed from
(
select name, sum(value) as OnSum, 0 as OffSum
from mytable
where on= true
group by name
union
select name, 0 as OnSum, sum(value) as OffSum
from mytable
where off=true
group by name
)
group by name
ваш «On» и Столбцы «Выкл.» Взаимоисключающие? О, и любой шанс, что вы могли бы форматировать свой вопрос немного яснее, делает его очень трудным для чтения, как есть. – RichardW1001
Если вы отправляете код или XML, ** пожалуйста ** выделите эти строки в текстовом редакторе и нажмите кнопку «код» (101 010) на панели инструментов редактора, чтобы красиво отформатировать и выделить синтаксис! –