TSQL基于先前的查询结果创建新查询

时间:2014-11-10 22:25:52

标签: sql sql-server tsql resultset

我有一个名为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())?

1 个答案:

答案 0 :(得分:2)

假设您想要返回一行,那么您想要确定优先顺序:

select top 1 price
from unitPrice
where resellerId in (123, 0)
order by (case when resellerId = 0 then 1 else 0 end);