根据列值从多行中选择

时间:2019-03-22 17:12:04

标签: sql sql-server

我有一张桌子,上面有各行单位的信息行。此信息来自A和B这两个位置。源A包含表中每个单元的信息,而源B包含更准确的信息,但仅适用于某些单元。

我该如何为每个单元选择一行,但是要优先于从源B选择信息(如果有信息)而不是从源A选择信息,从而仅使用来自B的数据为该单元生成一行?现在,如果两个来源中都有一个单元,它将在我的查询中显示为两个不同的行。我曾尝试在where子句中使用case语句,在select语句中使用IF语句。

我觉得有一个非常简单的解决方案,但是由于某种原因,我正在努力解决这个问题。预先感谢。

表结构: UnitKey(PK)UnitID小时数据源

3 个答案:

答案 0 :(得分:1)

您可以使用union all

select b.*
from b
union all
select a.*
from a
where not exists (select 1 from b where <matching conditions here>);

答案 1 :(得分:1)

加入2个表,大概是A LEFT JOIN B。您可以在CASE中使用SELECT语句来检查表B中的信息是否可用,ELSE来自表A

如果您写的是更详细的问题,我可以写出更详细的答案。

答案 2 :(得分:1)

Boolean({}["length"]+1)

那怎么样?