根据SQL中的确定参数确定的行数

时间:2018-10-17 21:38:31

标签: sql oracle row case

如果number为NULL,我需要获取所有行或获取数字行。

到目前为止,这是我的代码。

  CASE
   WHEN value IS NOT NULL THEN SELECT FIRST number * FROM MYTABLE
  END

最好的方法是什么?

2 个答案:

答案 0 :(得分:0)

我对您的发言和您的问题感到困惑,不清楚:

  

如果number为NULL,我需要获取所有行或获取number

您的查询与您的问题不匹配。因此,我已经分解了您的查询和问题。

  1. 您不能使用case来调用多列,case仅返回单列。和 不要忘了加上括号,否则会出错。

您的查询应该是:

CASE
   WHEN value IS NOT NULL THEN (SELECT number  FROM MYTABLE)
END
  1. 我假设您要在条件number不为空的情况下检查value为空。

您的查询应该是:

CASE
   WHEN value IS NOT NULL THEN 
   (SELECT case when number is null then 0 else number end FROM MYTABLE)
END

由于您使用的是Oracle,因此可以使用NVL,可以阅读Null Value Here

CASE
   WHEN value IS NOT NULL THEN 
   (SELECT NVL(number, 0) FROM MYTABLE)
END
  1. 您要获取数字行吗?在这里变得混乱。我想你想从 条件,值不为null,则计入数字。您可以阅读Count Here

您的查询应该是:

CASE
   WHEN value IS NOT NULL THEN (SELECT count(number) FROM MYTABLE)
END

所有此查询都可以返回

  

子查询返回的错误超过一行

因此,我比这里subquery更喜欢您加入。您可以阅读About Join Here

答案 1 :(得分:0)

我想你想要

select t.*
from mytable t
where <number> is null or
     rownum <= <number>;

我不清楚您的示例代码为何同时具有numbervalue