admin

SQL获取特定行中具有特定值的列数

sql

我知道我可以通过使用COUNT(*)函数来获取特定列中具有特定值的行数,但是我想找到具有特定值的特定行中的列数。有关如何执行此操作的任何建议?

我会发布一个示例,说明到目前为止我已经尝试过的内容,但是我完全迷失了它。。。。。。。。。。。。。。。。。。。。。。。。。

编辑1-这是一些示例数据和预期结果:

桌子-运单| u1 | u1paid | u2 | u2paid | u3 | u3paid | u4 | u4paid | u5 | u5paid

所以我想做的是,当我使用Trackbill选择特定的行时,我想遍历其所有列,看看哪些列的值为’false’。因此,如果只有u1paid和u3paid是值为false的列,则返回的答案应为2。


阅读 326

收藏
2021-06-07

共1个答案

admin

我认为您的表结构如下:

TABLE trackbill
( u1     NUMBER(10,2)
, u1paid VARCHAR(10)  -- contains values 'Yes' or 'No'
, u2     NUMBER(10,2)
, u2paid VARCHAR(10)  -- contains values 'Yes' or 'No'
, u3     NUMBER(10,2)
, u3paid VARCHAR(10)  -- contains values 'Yes' or 'No'
, u4     NUMBER(10,2)
, u4paid VARCHAR(30)  -- contains values 'Yes' or 'No'
, u5     NUMBER(10,2)
, u5paid VARCHAR(30)  -- contains values 'Yes' or 'No'
)

因此,要检查uxpaid列中有多少个“是” ,我们可以将SQL编写为:

SELECT u1, u1paid, u2, u2paid, u3, u3pai, u4, u4paid, u5, u5paid
       , CASE u1paid WHEN 'Yes' THEN 1 ELSE 0 END
       + CASE u2paid WHEN 'Yes' THEN 1 ELSE 0 END
       + CASE u3paid WHEN 'Yes' THEN 1 ELSE 0 END
       + CASE u4paid WHEN 'Yes' THEN 1 ELSE 0 END
       + CASE u5paid WHEN 'Yes' THEN 1 ELSE 0 END
       AS no_of_paid_columns
  FROM trackbill

我不了解SQLite,无法为您提供帮助。

2021-06-07