我对SQL还是很陌生,通常可以用基本的东西找到自己的方式,但是这次我有点卡住了...
我正在尝试检索(并显示)存储在MSSQL DB中的在线应用程序的不同配置。
我必须查看某个表和列的值(我们将其称为“ configName.id”),并且根据返回的值(负,正,NULL),我必须在不同的表中将其匹配,在同一列中显示3个选项之一。
我尝试使用CASE,但是我不想显示3个不同的列。我想查询不同的表,并在单列中显示结果。显示的列名称应为“配置名称”。
在基本算法语言中,应为:
如果(configName.id> 0) ->显示表“ a”中的相应值
如果(configName.id <0) ->将返回的值反转为正,显示表“ b”中的相应值
其他 ->在结果中显示“ NULL”。
我的挑战是,无论从任何表返回的结果如何,我都必须将其显示在我的报告列“配置名称”下。
任何帮助将不胜感激,谢谢!
答案 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;