我正在尝试计算某行中所有已填充的列。可以吗?例如:
我想从3号开始数,只数填满的列。
s5a0g9ez1#
您可以使用NVL2函数来检查某列是"已填充"(非NULL)还是"未填充"(NULL),然后将每列的值相加:
NVL2
NULL
SELECT NVL2(column3, 1, 0) + NVL2(column4, 1, 0) + NVL2(column5, 1, 0) + NVL2(column6, 1, 0) + NVL2(column7, 1, 0) -- ... + NVL2(column42, 1, 0) AS number_of_non_null_columns FROM table_name
其中,对于示例数据:
CREATE TABLE table_name ( column1, column2, column3, column4, column5, column6, column7, /* ... */ column42 ) AS SELECT 1, 1, 1, 1, 1, 1, 1, /* ... */ 1 FROM DUAL UNION ALL SELECT 2, 2, 2, 2, 2, NULL, 1, /* ... */ 1 FROM DUAL UNION ALL SELECT 3, 3, 3, 3, 3, NULL, NULL, /* ... */ 1 FROM DUAL UNION ALL SELECT 4, 4, NULL, NULL, NULL, NULL, NULL, /* ... */ NULL FROM DUAL;
输出:| 非空列数|| - ------|| 六个|| 五个|| 四个|| 无|
1条答案
按热度按时间s5a0g9ez1#
您可以使用
NVL2
函数来检查某列是"已填充"(非NULL
)还是"未填充"(NULL
),然后将每列的值相加:其中,对于示例数据:
输出:
| 非空列数|
| - ------|
| 六个|
| 五个|
| 四个|
| 无|