1

我有一个关于如何使用 sql 对数据进行排序的问题。为此,我做了一个简单的例子来说明我的问题。

if object_id('MyTable', 'U') is not null drop table  dbo.MyTable;

create table MyTable
(
    country varchar(10) not null
    , town varchar( 10 ) not null
    , amount int not null
)

insert into MyTable values
( 'US', 'NYC', 100 )
, ( 'US', 'BAL', 150 )
, ( 'US', 'WAS', 200 )
, ( 'CA', 'MON', 100 )
, ( 'CA', 'TOR', 150 )
, ( 'CA', 'VAN', 200 )

如何在某种意义上对数据进行排序,所有“国家都按数量降序排列,每个国家的城镇按字母顺序排列。

谢谢,克里斯蒂安

4

3 回答 3

3

要在 SQL 中排序,请使用 Order By:http: //msdn.microsoft.com/en-us/library/ms188385.aspx

因此,如果您想按 Country、Amount、Town 排序,您可以在 Where 类之后添加一个 Order By 子句,例如:

ORDER BY Country, Amount DESC, Town
于 2012-07-13T19:30:41.713 回答
1

我认为应该这样做:

SELECT
    country,
    SUM(amount) OVER(PARTITION BY country) as CountryTotal,
    town,
    amount
FROM        MyTable
ORDER BY    CountryTotal, country, town
于 2012-07-13T19:36:35.313 回答
0

我不确定您是要按一个国家/地区的总金额还是仅按金额订购。国家使用总量如下。

select 
mt.country,
ctotal.countrycotal,
mt.town,
mt.amount
from 
(
SELECT 
 country, 
 SUM(amount) as countrycotal, 
 FROM        MyTable 
 group BY  country

) ctotal 内部连接 ​​Mytable mt on ctotal.country = mt.country

order by ctotal.countrytotal,ctotal.country,mt.town

仅用于以下数量

select * from Mytable 
order by mt.amount,mt.country,mt.town
于 2012-07-14T06:30:49.223 回答