Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在执行case时,when和else部分都在oracle中工作_Sql_Oracle - Fatal编程技术网

Sql 在执行case时,when和else部分都在oracle中工作

Sql 在执行case时,when和else部分都在oracle中工作,sql,oracle,Sql,Oracle,我在select查询中使用了case when,它同时执行when和else部分。请给出一个解决方案 SELECT column2 FROM template_Data_Details_bkp WHERE template_id = (SELECT template_id FROM templates WHERE template_name = 'Testing')

我在select查询中使用了case when,它同时执行when和else部分。请给出一个解决方案

 SELECT column2
  FROM template_Data_Details_bkp
 WHERE     template_id = (SELECT template_id
                            FROM templates
                           WHERE template_name = 'Testing')
       AND column1 = 'EM1'
       AND (CASE
               WHEN (column2 = 'stock' AND column1 = 'EM1')
               THEN
                  column2
               ELSE
                  (SELECT column2
                     FROM template_data_details_bkp
                    WHERE     template_id =
                                 (SELECT template_id
                                    FROM templates
                                   WHERE template_name = 'Testing')
                          AND column1 = 'EM1'
                          AND column4 = 'YES')
            END) = column2;
这张桌子看起来像

专栏1 专栏2 专栏4 EM1 股票 不 EM1 拉加维 对
也许你有两排

在第一行中,case语句进入
WHEN(column2='stock'和column1='EM1')
在第二行,语句进入
ELSE

每行有一个结果

如果只想看到一行,请跳过else语句,或清除WHERE语句,使其更简单


问候。

我不太清楚。你能更好地解释一下这个问题吗?您是否有意外的结果、错误等?另外,您可以发布所有相关表格的样本数据吗?例外结果-表格实际结果中的第一行-获取两行在不知道相关表格内容的情况下,我们唯一知道的是您的where条件匹配两行,而不是您预期的一行,但是很难理解为什么在这种特殊情况下,where条件的结果是:where column1='EM1'和column2=column2,所以结果集中会有两行。