MS SQL Server 2014
考虑如下表:
idkey companyid |column 1 |column 2
------------------------------------------------
1 0 apple fruit 1
2 0 orange fruit 2
3 0 grapes fruit 3
4 10 banana fruit 2
CompanyId = 0是默认的值列表;其他公司ID可以覆盖单个值或采用默认列表。
请注意,对于companyid = 10,'fruit 2'具有为第1列指定的不同值。
如何使用公司10覆盖选择companyid 0的值,如:
idkey companyid |column 1 |column 2
------------------------------------------------
1 0 apple fruit 1
4 10 banana fruit 2
3 0 grapes fruit 3
有没有办法用单个SQL语句执行此操作,还是需要创建存储过程和临时表?我搜索了很多,但显然无法找到一种方法来简单地说出问题,以便搜索返回有用的答案。
答案 0 :(得分:1)
select coalesce(t2.idkey, t1.idkey) as idkey,
coalesce(t2.companyid, t1.companyid) as companyid,
coalesce(t2.column1, t1.column1) as column1,
coalesce(t2.column2, t1.column2) as column2
from your_table t1
left join your_table t2 on t1.column2 = t2.column2
and t2.companyid <> 0
where t1.companyid = 0