[英]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: 如果DESTINATIONS
和GAS_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.