我有一个名为PRICE的表,有两列,unitPrice和resellerId。从我的应用程序,我使用以下代码(伪)来查询给定经销商的unitPrice。基本上,如果resellerId出现在表中,我会使用unitPrice。否则,我使用默认的unitPrice(对于Id 0的特殊经销商)
resultSet = select unitPrice from PRICE where resellerId=123
if(resultSet.isEmpty()){
resultSet = select unitPrice from PRICE where resellerId=0
}
这一切都很好。
我的问题是,如果TSQL中有一种方法可以将上面的两个查询组合成一个语句,该语句返回unitPrice而不检查条件的应用程序代码(即不检查resultSet.isEmpty())?
答案 0 :(得分:2)
假设您想要返回一行,那么您想要确定优先顺序:
select top 1 price
from unitPrice
where resellerId in (123, 0)
order by (case when resellerId = 0 then 1 else 0 end);