2

我有一个简单的 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

我希望值“Lead”的行出现在结果的底部。我怎样才能做到这一点?

4

4 回答 4

3

试试这个——

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
于 2013-04-22T07:47:03.377 回答
2

如果您不知道 Lead 是否始终具有最大价值,您可以试试这个:

select 
    [BusinessModel], count(*) As Total 
from DimHotelExpand
group by 
    [BusinessModel] 
order by 
    case [BusinessModel] when 'Lead' then 1 else 0 end asc
于 2013-04-22T07:49:11.590 回答
1

您可以尝试使用“联合所有”。

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] 

我相信“订购方式”的解决方案不能正常工作。只有在“Lead”是更大的业务模型时才能正常工作。

我认为 frikozoid 解决方案也是有效的。

于 2013-04-22T08:02:39.367 回答
1

您可以按总列排序(因为潜在客户的数量更高),如下所示:

SELECT [BusinessModel], count(*) As Total from DimHotelExpand
GROUP BY [BusinessModel]
ORDER BY count(*)
于 2013-04-22T07:45:16.720 回答