Teradata 中的 SQL case 语句

标签 sql if-statement case teradata

我正在尝试在 Teradata 中编写一个简单的 IF/ELSE 语句。据我了解,你必须使用 CASE。我想要做的是编写一条语句来检查列是否不为空并显示一些内容。 ELSE 如果为 NULL,则显示其他内容。

我发现的每个示例都只是用硬编码字符串或整数替换单个值。我正在寻找更多类似的东西,它使用 THEN 语句来进行另一个 SELECT:

  SELECT CARS.VIN_NUM, CARS.DRIVER_NAMES
     CASE
       WHEN CARS.FUEL IS NOT NULL THEN SELECT CARS.DESTINATIONS
       WHEN CARS.FUEL IS NULL THEN SELECT CARS.GAS_STATIONS
     END
  FROM AUTOMOBILES CARS
  WHERE CARS.VIN_NUM IN
  ('345353',
   '354632',
   '535231')
  ORDER BY CARS.VIN_NUM

最终结果应该是一个根据案例显示 VIN_NUM、DRIVER_NAMES、DESTINATIONS 或 GAS_STATIONS 的表格。这样的事情可能吗,还是我的处理方式错误?

最佳答案

如果 DESTINATIONSGAS_STATIONS 是表 AUTOMOBILES 中的列(别名 CARS),则以下内容应该有效:

 SELECT CARS.VIN_NUM, 
        CARS.DRIVER_NAMES,
     CASE
       WHEN CARS.FUEL IS NOT NULL THEN CARS.DESTINATIONS
       ELSE CARS.GAS_STATIONS
     END
  FROM AUTOMOBILES CARS
  WHERE CARS.VIN_NUM IN
  ('345353',
   '354632',
   '535231')
  ORDER BY CARS.VIN_NUM;

关于Teradata 中的 SQL case 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18262493/

相关文章:

sql - DBI:断开连接 - 问题

php - 面向 PHP 开发人员的 PostgreSQL 和 MySQL 之间的差异

python - 从一组整数中随机采样

java - 多个 else if 条件,当逻辑规定最后一个 "else if"时,以另一个 "else"或 "else"结束 - 部分仅规定一种可能性?

java - 为什么 Java 中的 Switch 语句可以包含 FINAL 变量作为 CASE?

mysql - MySQL中的case语句

mysql - 根据条件选择不同的结果

mysql - 更新表,然后删除行(如果未设置)

mysql - 关于查询的格式

java - 如何仅使用 for、if 或 while 查找 java 数组中的重复项?