2016-12-06 48 views
4

我执行SELECT语句如下预言:案例:I/Elsef查询

Select case 
     when count(*) = 0 then 'Pass' 
     end as Test_Result 
    from Table Name 
where condition; 

我想输出如下

If count(*)=0 then Result should be 'Pass' 

否则我想这个查询的输出。我的意思是下面一个

Select Count(*) 
    from Table Name 
where condition; 
+0

请理解SQL SELECT语句的每个结果是一个表,并且列的数量及其类型是静态派生的,即绝对值查看SQL语句和表定义,但不检索任何表数据。那么你的结果应该包含哪些列(包括类型)(所以它适合这两种情况)? – Codo

回答

3

这里的一个选项是没有WHERE条件来执行查询,然后使用条件聚合得到它出现在ELSE条件计数输出。

SELECT CASE WHEN COUNT(*) = 0 THEN 'Pass' 
      ELSE CAST(SUM(CASE WHEN condition THEN 1 ELSE 0 END) AS VARCHAR2(30)) 
     END AS Test_Result 
FROM yourTable 
0

的一种方法是:

设置:

create table emptyTab (a number); 
create table notEmptyTab (a) as (select 1 from dual); 

这应该做的伎俩:

SQL> select case 
    2   when count(*) = 0 then 'Pass' 
    3   else to_char(count(*)) 
    4   end 
    5 from emptyTab 
    6 where a = 1  ; 

CASEWHENCOUNT(*)=0THEN'PASS'ELSETO_CHAR(
---------------------------------------- 
Pass 

SQL> select case 
    2   when count(*) = 0 then 'Pass' 
    3   else to_char(count(*)) 
    4   end 
    5 from notEmptyTab 
    6 where a = 1; 

CASEWHENCOUNT(*)=0THEN'PASS'ELSETO_CHAR(
---------------------------------------- 
1 

SQL> select case 
    2   when count(*) = 0 then 'Pass' 
    3   else to_char(count(*)) 
    4   end 
    5 from notEmptyTab 
    6 where a = 2; 

CASEWHENCOUNT(*)=0THEN'PASS'ELSETO_CHAR(
---------------------------------------- 
Pass 
+0

感谢它工作计数(*)在其他条件 –

+0

什么如果我要获取整个查询结果在其他条件(选择*从表) –

+0

请回答:::什么如果我必须获取整个查询结果在其他条件从表中选择*) –