2013-04-22 1 views
0

У меня есть простой SQL-запрос, который возвращает данные в качествеКак вернуть определенную строку в нижнюю часть из результатов SQL-запроса?

select [BusinessModel], count(*) As Total from DimHotelExpand 
group by [BusinessModel] 

Результат приходит как:

DA  53894 
DL  7098 
ECM  1472 
Flex  14789 
GDS  33487 
Lead  1499050 
MT  71306 
Unknown 572467 

Я хочу строку со значением «Свинец» появится в нижней части результата. Как я могу это сделать?

+2

Какова логика «Свинец» внизу? – hims056

+0

Вы можете добавить: Заказать Всего к вашему заявлению select – Milen

ответ

1

Вы можете попробовать это, если вы не делаете знать, имеет ли Ведение всегда наибольшее значение:

select 
    [BusinessModel], count(*) As Total 
from DimHotelExpand 
group by 
    [BusinessModel] 
order by 
    case [BusinessModel] when 'Lead' then 1 else 0 end asc 
+0

Sweet .. Спасибо! –

1

Вы можете заказать его с помощью вашего общего колонка (с количеством свинца в выше), как это:

SELECT [BusinessModel], count(*) As Total from DimHotelExpand 
GROUP BY [BusinessModel] 
ORDER BY count(*) 
2

Попробуйте один -

SELECT 
     d.BusinessModel 
    , Total = COUNT(1) 
FROM dbo.DimHotelExpand d 
GROUP BY d.BusinessModel 
ORDER BY 
     CASE WHEN d.BusinessModel = 'Lead' THEN 0 ELSE 1 END 
    , Total 
+0

Но arent мы предполагаем, что Total будет самым высоким для потенциальных клиентов каждый раз здесь? –

+0

Пожалуйста, попробуйте обновленный ответ. – Devart

1

Вы можете попробовать с "union all".

select [BusinessModel], count(*) As Total from DimHotelExpand 
where [BusinessModel] <> 'Lead' 
group by [BusinessModel] 
union all 
select [BusinessModel], count(*) As Total from DimHotelExpand 
where [BusinessModel] = 'Lead' 
group by [BusinessModel] 

Решение с "Order by", я считаю, не работает нормально. Работает отлично, а «Ведущий» - более крупная модель бизнеса.

Я считаю, что решение по фриксоидам также действительное.

+0

Нет никакой гарантии, что в конце будет отображаться строка с «Ведущим». –

+0

Я думаю, что это верно для предложения «union», потому что сначала сортирует строки, чтобы устранить повторяющиеся, а также возвращает упорядоченные строки. Но не для предложения «союз все», по крайней мере в Oracle. (хотя думаю, решение frikozoid, является лучшим.) –

+1

Большинство, если не все СУБД ведут себя так, в этом отношении, большую часть времени. Но не всегда. Я хочу сказать, что нет никакой гарантии, что они будут вести себя так, всегда. Потому что они делают это несколько тысяч раз, когда вы его тестировали, ничего не значит. –

Смежные вопросы