查找总行数

时间:2014-03-10 07:02:44

标签: sql oracle

我有一张这样的表

Table1
=======    

A                    B
8                    5
2                    9
null                 4
2                    5

如何从table1中查找总行数,请注意,如果一行中的任何列值为空,那么该行应该被视为2行?

  

我尝试过使用count(*)* 2和nvl函数它不起作用

2 个答案:

答案 0 :(得分:4)

试试这个

SELECT SUM(CASE WHEN A IS NULL OR B IS NULL THEN 2 ELSE 1 END) AS CountVal
FROM TABLE1

<强> Fiddle Demo

O / P:

COUNTVAL
--------
5

答案 1 :(得分:2)

COUNT()基于行。您可以使用SUM()进行调整..

select sum(NVL2(a,NVL2(b,1,2),2)) FROM TABLE1
@Vignesh建议的

CASE最简单,更易读!!

COUNT()也可以这样做..但 NOT 是一个最佳解决方案!

SELECT COUNT(1) FROM
(    
    SELECT NVL(a,NVL(b,1)) FROM TABLEA
    UNION ALL
    SELECT NVL(a,NVL(b,1)) FROM TABLEA 
        WHERE A OR B iS NULL
)