简体   繁体   English

Teradata中的SQL案例语句

[英]SQL case statement in Teradata

I'm trying to write a simple IF/ELSE statement in Teradata. 我正在尝试在Teradata中编写一个简单的IF / ELSE语句。 As far as I understand you have to use a CASE. 据我了解,您必须使用CASE。 What I want to do is write a statement that will check if a column IS NOT NULL and display something. 我想做的是编写一条语句,该语句将检查列是否不为空并显示某些内容。 ELSE if it IS NULL, display something else. 如果为NULL,则显示其他内容。

Every example I found simply replaces a single value with a hard coded string or int. 我发现的每个示例都只是用硬编码的字符串或整数替换单个值。 I'm looking for something more along the lines of this which uses the THEN statement to make another SELECT: 我正在寻找更多类似的东西,它使用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

The end result should be a table displaying the VIN_NUM, DRIVER_NAMES, DESTINATIONS OR GAS_STATIONS based on the CASE. 最终结果应该是一个基于CASE显示VIN_NUM,DRIVER_NAMES,DESTINATIONS或GAS_STATIONS的表。 Is something like this possible or am I going about it the wrong way? 这样的事情可能发生吗,还是我会以错误的方式解决?

If DESTINATIONS and GAS_STATIONS are columns in the table AUTOMOBILES (aliased CARS ) then the following should work: 如果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;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM