根据另一个表/列的值显示不同的表值

时间:2019-02-06 22:37:54

标签: sql

我对SQL还是很陌生,通常可以用基本的东西找到自己的方式,但是这次我有点卡住了...

我正在尝试检索(并显示)存储在MSSQL DB中的在线应用程序的不同配置。

我必须查看某个表和列的值(我们将其称为“ configName.id”),并且根据返回的值(负,正,NULL),我必须在不同的表中将其匹配,在同一列中显示3个选项之一。

我尝试使用CASE,但是我不想显示3个不同的列。我想查询不同的表,并在单列中显示结果。显示的列名称应为“配置名称”。

在基本算法语言中,应为:

如果(configName.id> 0)   ->显示表“ a”中的相应值

如果(configName.id <0)   ->将返回的值反转为正,显示表“ b”中的相应值

其他   ->在结果中显示“ NULL”。

我的挑战是,无论从任何表返回的结果如何,我都必须将其显示在我的报告列“配置名称”下。

任何帮助将不胜感激,谢谢!

1 个答案:

答案 0 :(得分:0)

会是这样

select coalesce(a.value, b.value) as value
from configname left join
     a
     on a.id = configname.id and configname.id > 0 left join
     b
     on b.id = abs(configname.id) and configname.id < 0;