1

我有一个要求,比如我需要在 oracle 表的单行中找到特定值的出现次数。

假设我的源表看起来像这样,

ID   score1   score2   score3   score4 score5
---------------------------------------------
aa    -1       65       -1       -1      82
bb    -1       65       99       14      82

我需要一个查询,它会返回类似的结果,

ID   score1   score2   score3   score4 score5  count ( count of -1 occurences)
------------------------------------------------------
aa    -1       65       -1       -1      82     3
bb    -1       65       99       14      82     1

我使用的 oracle 版本是 Oracle 10g(因此排除了使用 PIVOT 选项)。任何人都可以帮我解决这个问题。

4

1 回答 1

2

您可以使用 CASE 或 DECODE 语句。

select table_name.*,
       case score1 when -1 then 1 else 0 end +
       case score2 when -1 then 1 else 0 end +
       case score3 when -1 then 1 else 0 end +
       case score4 when -1 then 1 else 0 end +
       case score5 when -1 then 1 else 0 end
        as score_count
  from table_name;

样品在这里

于 2013-09-18T04:18:30.877 回答