我正在尝试在 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 的表格。这样的事情可能吗,还是我的处理方式错误?
最佳答案
如果 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;
关于Teradata 中的 SQL case 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18262493/