2014-11-10 1 views
0

У меня есть таблица под названием PRICE с двумя столбцами, unitPrice и resellerId. Из моего приложения я использую следующий код (псевдо) для запроса unitPrice для данного реселлера. В основном я использую unitPrice, если resellerId представлен в таблице. В противном случае я использую стандартную единицу цен (для специального реселлера с Id 0)TSQL создать новый запрос на основе предыдущего результата запроса

resultSet = select unitPrice from PRICE where resellerId=123 
if(resultSet.isEmpty()){ 
    resultSet = select unitPrice from PRICE where resellerId=0 
} 

Это работает отлично.

Мой вопрос в том, есть ли способ в TSQL, чтобы объединить два указанных выше запроса в один оператор, который возвращает unitPrice без кода приложения, проверяющего условие (т. Е. Без проверки resultSet.isEmpty())?

ответ

2

Предполагая, что вы хотите вернуть одну строку, то вы хотите сделать приоритизации:

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

Smart! Работает как шарм. – sunrise