首页 > 解决方案 > 根据另一个表/列的值显示不同的表值

问题描述

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

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

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

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

在基本算法语言中,这将是:

if (configName.id > 0) -> 显示表“a”中的对应值

if (configName.id < 0) -> 将返回的值取反为正,显示表“b”中的对应值

else -> 显示“NULL”作为结果。

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

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

标签: sql

解决方案


会是这样的

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;

推荐阅读