【问题标题】:IF ELSE statement in TeradataTeradata 中的 IF ELSE 语句
【发布时间】:2019-04-30 15:28:03
【问题描述】:

我有两个 sql 语句 SQL 1 和 SQL 2。此外,我想按照以下逻辑运行它们,

SELECT * 
FROM MY_TABLE
WHERE COL1 > 0;

If ACTIVITY_COUNT = 0 THEN RUN SQL 1     ----- if records are present then run sql 1

ELSE 

RUN SQL 2    ----- if records are not present the run sql 2

您能否推荐一个 TERADATA SQL 代码?

提前致谢!

【问题讨论】:

  • 你有逻辑。假设 Activity_Count 是记录数。查找如何对 SQL 变量进行计数。然后使用您向我们展示的逻辑。你在正确的轨道上。
  • @jasttim 你知道将运行第一个 if 语句的 Teradata sql 语法吗?那我会用两次。感谢您的评论。
  • 您使用的是哪个客户端? BTEQ & SQL Assistant 支持,否则你需要一个存储过程。
  • SQL 助手@dnoeth
  • 如何在 SQL 助手中做到这一点?请给我一个示例代码好吗? @dnoeth

标签: sql if-statement teradata teradata-sql-assistant


【解决方案1】:
CREATE PROCEDURE activity_proc(OUT out_res VARCHAR(30))
BEGIN
  DECLARE l_cnt  int;
  SELECT n_activity_count INTO l_cnt FROM My_Table;

  IF l_cnt=0 THEN
    select  'No activity' into out_res;
  ELSE  
    select  'Activity count: ' || cast(l_cnt as varchar(10)) into out_res;
  END IF;   

END;

另外,请记住,activity_count 是一个保留字。

【讨论】:

    【解决方案2】:

    SQL 助手支持旧的 BTEQ 语法:

    SELECT * 
    FROM MY_TABLE
    WHERE COL1 > 0;
    
    .IF ACTIVITYCOUNT = 0 THEN .GOTO l2; -- no result, skip SQL 1
    
    SQL 1     ----- if records are present then run sql 1
    
    .EXIT;  -- don't run SQL2
    
    .LABEL l2;
    
    SQL 2    ----- if records are not present the run sql 2
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-09
      • 2015-10-28
      • 2017-02-05
      • 1970-01-01
      • 2015-07-06
      • 2012-08-05
      • 1970-01-01
      相关资源
      最近更新 更多