2

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

我发现的每个示例都只是用硬编码的字符串或 int 替换单个值。我正在寻找更多类似的东西,它使用 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

最终结果应该是一个表格,显示基于 CASE 的 VIN_NUM、DRIVER_NAMES、DESTINATIONS 或 GAS_STATIONS。像这样的事情是可能的还是我走错了路?

4

1 回答 1

4

如果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;
于 2013-08-16T02:05:09.540 回答