当前位置: 首页 > 知识库问答 >
问题:

如何根据配置单元SQL中的条件运行不同的select语句

廖夜洛
2023-03-14

我想知道如何根据配置单元SQL中的条件运行不同的select语句。

以下查询不起作用,但会引发错误。

编译语句时出错:FAILED:Parse异常第4:2行无法识别表达式规范中靠近'('SELECT''1'的输入

SELECT 
    CASE WHEN '${UN}'!= '' THEN 
        (
        SELECT * 
            from table1 t 
            WHERE t.yymmddval BETWEEN '${D1}' AND '${D2}'
            AND t.un in ('${UN}')
        )
    ELSE
        (
        SELECT * 
            from table1 t 
            WHERE t.yymmddval BETWEEN '${D1}' AND '${D2}'
            AND t.un in (
               (SELECT
                o.unq_num as un
                FROM table2 as o
                WHERE o.date >= '2017-01-01'
                    AND upper(o.srl_num) in ('${R}')
                LIMIT 1)            
            )       
        )
    END 

共有1个答案

从焱
2023-03-14

在查询中使用UNION ALL添加切换相应查询的条件:

 select * 
   from table1 t 
   where (t.yymmddval BETWEEN '${D1}' and '${D2}')
     and t.un in ('${UN}') 
     and '${UN}'!= '' --switching condition 

union all

select * 
  from table1 t 
 where (t.yymmddval BETWEEN '${D1}' AND '${D2}')
   and t.un in 
              (SELECT
               o.unq_num as un
               FROM table2 as o
               WHERE o.date >= '2017-01-01'
                   AND upper(o.srl_num) in ('${R}')
               LIMIT 1) 
    and '${UN}'= '' --switching condition
 类似资料:
  • 我想在C#中使用组合框对条件进行数据过滤,所以我使用了这个存储过程: 参数由7个组合框补偿,但问题是我必须选择(所有)参数值来显示数据,这不是必需的,我想要的是显示数据,一旦我从任何组合框中选择(任何)值

  • 问题内容: 我正在尝试匹配更新并选择条件相同的查询计数。但是行数却有很大的不同。 更新查询: 选择查询 请帮我解决这个问题。 也请让我知道@@ rowcount将如何用于更新查询。 问题答案: 如果联接中涉及的至少两个表之间存在一对多关系,则会发生这种情况。 该会统计所有行,包括那些由加盟倍增,。该会仅计算唯一行受影响。 在存在一对多关系的地方,不能确定连接到特定行的“许多”行中的哪一行被用作该行

  • 问题内容: 这是问题的简化:我有一个看起来像这样的选择: 并返回的数据快照看起来像这样 我想做的是,如果工作组是内部的,则选择不显示受让人的名称。而是显示工作流。 因此,例如,我想要实现的结果将是这样的: 我希望这是有道理的?基本上是一个条件选择,可以检测某个列是否包含某个值,然后用[whatever]替换另一个列的值。 提前致谢! 编辑我想实现这样的事情: 问题答案: 您没有提到您的DBMS,但

  • 问题内容: 如何在Spring配置文件中包含条件语句 我有四季豆(b),其值取决于属性(a)的值。a是根据其运行环境动态设置的。 我该如何在spring config中编写代码? 问题答案: 正如Ryan所说,SpEL可以提供帮助。你应该能够在Spring xml中执行以下操作:

  • 我是自动化UI测试的新手,我正在使用Cucumber和Selenium研究UI自动化。 所以在我的项目中,我创建了一个钩子类来设置web驱动程序进行测试。类似这样的事情: 但是如果我想用不同的浏览器和不同的环境运行相同的测试。例如,我想用chrome和环境A运行测试,用firefox和环境B运行相同的测试。我计划为不同的环境创建两个属性文件

  • 下面的查询是我通过配置单元客户端、Java程序JDBC和Beeline执行的。 在Hive cilent上执行时,只需21s就完成了,而Java程序JDBC和beeline分别需要110s和200s。 配置单元客户端仅使用一个映射器就完成了此操作。 Java JDBC和beeline执行了5个MR作业。每个MR作业需要2个映射器和1个还原器。 下面是每个表的行计数。 table_one有44981