Попытка увеличить ячейку на 1 для каждого значения флага в строке в БД BROWSER для SQLITE - PullRequest
1 голос
/ 03 мая 2020

Я пытаюсь увеличить ячейку в строке для каждого «флажка», равную «2».

Чтобы быть более точным c, у меня есть таблица, которая содержит customer_numbers и соответствующие группы продуктов, которые можно пометить как {0: «продукт никогда не использовался», 1: «неактивен», 2: «активен»}

Таким образом, имена моих столбцов выглядят так {customer_no, GRP1, GRP2, GRP3 , GRP4, GRP5 и есть еще один столбец, который я создаю, чтобы он считался как GROUP_ACTIVE_COUNT}

Для каждого клиента я хочу подсчитать, сколько групп product_group они активны.

В качестве примера:

  • GRP1 клиента 1: 1 GRP2: 2 GRP3: 0 GRP4: 1 GRP5: 2 ----> GROUP_ACTIVE_COUNT будет равно 2
  • GRP1 клиента 2: 2 GRP2: 2 GRP3: 0 GRP4: 1 GRP5: 2 ----> GROUP_ACTIVE_COUNT будет равно 3

  • GRP1 клиента 3: 2 GRP2: 2 GRP3: 2 GRP4: 2 GRP5: 2 ----> GROUP_ACTIVE_COUNT будет равно 5

  • GRP клиента 4: 1 GRP2: 1 GRP3: 1 GRP4: 1 GRP5: 1 ----> GROUP_ACTIVE_COUNT будет равно 0

  • GRP1 клиента: 0 GRP2: 0 GRP3: 0 GRP4: 0 GRP5: 0 ----> GROUP_ACTIVE_COUNT будет равно 0

Вот что я сделал до сих пор:

 SELECT
     CUST_NO
    ,GROUP_ACTIVE_C
    ,GROUP_ACTIVE_COUNT
    ,CASE
        WHEN GRP1 = 2 THEN --DO SOMETGING LIKE GROUP_ACTIVE_COUNT = GROUP_ACTIVE_COUNT+1
        WHEN GRP2 = 2 THEN --DO SOMETGING LIKE GROUP_ACTIVE_COUNT = GROUP_ACTIVE_COUNT+1
        WHEN GRP3 = 2 THEN --DO SOMETGING LIKE GROUP_ACTIVE_COUNT = GROUP_ACTIVE_COUNT+1
        WHEN GRP4 = 2 THEN --DO SOMETGING LIKE GROUP_ACTIVE_COUNT = GROUP_ACTIVE_COUNT+1
        WHEN GRP5 = 2 THEN --DO SOMETGING LIKE GROUP_ACTIVE_COUNT = GROUP_ACTIVE_COUNT+1    
    ,GRP1
    ,GRP2
    ,GRP3
    ,GRP4
    ,GRP5
FROM XSELL_DATAMART

Моя основная проблема заключается в том, что я не могу создать переменную в SQ LITE, чтобы я мог получить в нее +1 и сохранить ее в каждую соответствующую строку: (

1 Ответ

1 голос
/ 03 мая 2020

Простая опция:

select
    x.*,
    (grp1 = 2) + (grp2 = 2) + (grp3 = 2) + (grp4 = 2) + (grp5 = 2) group_active_count
from xsell_datamart x

SQLite оценивает каждое условие как 1, если оно истинно, и 0, если ложно, поэтому при суммировании условий вы получаете целочисленное значение, которое представляет количество выполненных условий.

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