【问题标题】:trying to increase cell by 1 for each 'flag' value in a row on DB BROWSER for SQLITE尝试将 DB BROWSER for SQLITE 上一行中的每个“标志”值的单元格增加 1
【发布时间】:2020-05-02 23:13:48
【问题描述】:

我正在尝试为每个等于“2”的“标志”连续增加一个单元格。

更具体地说,我有一个表,其中包含 customer_numbers 和相应的产品组,可以标记为 {0: 'never used the product', 1:'inactive', 2:'active'}

所以我的列名看起来像这样{customer_no, GRP1, GRP2, GRP3, GRP4, GRP5 并且我创建的另一列算作 GROUP_ACTIVE_COUNT}

对于每个客户,我想计算他们活跃的 product_groups 数量。

举个例子:

  • 客户 1 的 GRP1:1 GRP2:2 GRP3:0 GRP4:1 GRP5:2 ----> GROUP_ACTIVE_COUNT 将等于 2
  • 客户 2 的 GRP1:2 GRP2:2 GRP3:0 GRP4:1 GRP5:2 ----> GROUP_ACTIVE_COUNT 将等于 3

  • 客户 3 的 GRP1:2 GRP2:2 GRP3:2 GRP4:2 GRP5:2 ----> GROUP_ACTIVE_COUNT 将等于 5

  • 客户 4 的 GRP1:1 GRP2:1 GRP3:1 GRP4:1 GRP5:1 ----> GROUP_ACTIVE_COUNT 将等于 0

  • 客户 5 的 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 并将其保存到每个相应的行中:(

【问题讨论】:

    标签: sql database sqlite select


    【解决方案1】:

    一个简单的选择是:

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

    SQLite 将每个条件评估为 1(如果为真)和0(如果为假),因此对条件求和会得到一个整数值,表示满足条件的计数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-09
      • 2019-10-04
      • 1970-01-01
      • 2013-06-20
      • 1970-01-01
      • 2021-04-08
      • 1970-01-01
      相关资源
      最近更新 更多