我有一张这样的表
Table1
=======
A B
8 5
2 9
null 4
2 5
如何从table1中查找总行数,请注意,如果一行中的任何列值为空,那么该行应该被视为2行?
我尝试过使用count(*)* 2和nvl函数它不起作用
答案 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
)