SQLite - суммирование значений в выражении регистра внутри выбора - PullRequest
0 голосов
/ 17 сентября 2018

Я пытаюсь получить сумму из дела в строке 4. Я пытался обернуть дело в сумму, имея сумму около s.qty, но ничего не работает.

select s.part,
max(case s.location when 'stock' then s.qty else 0 end) qty_stock,
max(case s.location when 'material' then s.qty else 0 end) qty_material,
case s.location when not 'stock' or 'material' then s.qty else 0 end qty_wip

from stock as s

group by s.part

выход

Part        qty_stock qty_material qty_wip
"Part 1"    "10"      "25"         "0"
"Part 2"    "12"      "0"          "0"
"Part 3"    "14"      "0"          "0"
"Part 4"    "16"      "0"          "0"
"Part 5"    "0"       "0"          "0"
"Part 6"    "0"       "0"          "0"

Любая помощь с удовольствием получена.

Ответы [ 2 ]

0 голосов
/ 17 сентября 2018

Вам нужно sum() вместо:

select s.part,
       sum(case when s.location = 'stock' then s.qty else 0 end) as qty_stock,
       sum(case when s.location = 'material' then s.qty else 0 end) as qty_material,
       sum(case when s.location not in ('stock', 'material') then s.qty else 0 end) as qty_wip
from stock as s
group by s.part;
0 голосов
/ 17 сентября 2018

Я думаю, что вы хотите:

select s.part,
       max(case s.location when 'stock' then s.qty else 0 end) as qty_stock,
       max(case s.location when 'material' then s.qty else 0 end) as qty_material,
       sum(case when s.location not in ('stock', 'material') then s.qty else 0 end ) as qty_wip
from stock as s
group by s.part;

Ваша проблема - само выражение case. Использование полного условия должно решить проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...