数据:
省份代码 城市代码 销量
01 0101 16
01 0102 8
01 0103 15
01 0104 3
01 0105 2
01 0106 1
01 0107 4
01 0108 5
01 0109 6
01 0110 7
01 0111 9
01 0112 10
01 0113 11
01 0114 12
01 0115 13
01 0116 14
02 0201 3
02 0202 8
02 0203 15
02 0204 16
02 0205 2
02 0206 1
02 0207 4
02 0208 5
02 0209 6
02 0210 7
02 0211 9
02 0212 10
02 0213 11
02 0214 12
02 0215 13
02 0216 14标注红色的地方是想得到的结果

解决方案 »

  1.   

    --------------------------------------------------------------------------
    --  Author : htl258(Tony)
    --  Date   : 2010-04-09 13:24:53
    --  Version:Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86) 
    --          Jul  9 2008 14:43:34 
    --          Copyright (c) 1988-2008 Microsoft Corporation
    --          Developer Edition on Windows NT 5.1 <X86> (Build 2600: Service Pack 2)
    --------------------------------------------------------------------------
    --> 生成测试数据表:tbIF NOT OBJECT_ID('[tb]') IS NULL
    DROP TABLE [tb]
    GO
    CREATE TABLE [tb]([省份代码] NVARCHAR(10),[城市代码] NVARCHAR(10),[销量] INT)
    INSERT [tb]
    SELECT '01','0101',16 UNION ALL
    SELECT '01','0102',8 UNION ALL
    SELECT '01','0103',15 UNION ALL
    SELECT '01','0104',3 UNION ALL
    SELECT '01','0105',2 UNION ALL
    SELECT '01','0106',1 UNION ALL
    SELECT '01','0107',4 UNION ALL
    SELECT '01','0108',5 UNION ALL
    SELECT '01','0109',6 UNION ALL
    SELECT '01','0110',7 UNION ALL
    SELECT '01','0111',9 UNION ALL
    SELECT '01','0112',10 UNION ALL
    SELECT '01','0113',11 UNION ALL
    SELECT '01','0114',12 UNION ALL
    SELECT '01','0115',13 UNION ALL
    SELECT '01','0116',14 UNION ALL
    SELECT '02','0201',3 UNION ALL
    SELECT '02','0202',8 UNION ALL
    SELECT '02','0203',15 UNION ALL
    SELECT '02','0204',16 UNION ALL
    SELECT '02','0205',2 UNION ALL
    SELECT '02','0206',1 UNION ALL
    SELECT '02','0207',4 UNION ALL
    SELECT '02','0208',5 UNION ALL
    SELECT '02','0209',6 UNION ALL
    SELECT '02','0210',7 UNION ALL
    SELECT '02','0211',9 UNION ALL
    SELECT '02','0212',10 UNION ALL
    SELECT '02','0213',11 UNION ALL
    SELECT '02','0214',12 UNION ALL
    SELECT '02','0215',13 UNION ALL
    SELECT '02','0216',14
    GO
    --SELECT * FROM [tb]-->SQL查询如下:
    select * from tb t where 销量 in(select top 20 percent 销量 from tb where [省份代码]=t.[省份代码] order by 销量 desc)/*
    省份代码       城市代码       销量
    ---------- ---------- -----------
    01         0101       16
    01         0103       15
    01         0115       13
    01         0116       14
    02         0203       15
    02         0204       16
    02         0215       13
    02         0216       14(8 行受影响)
    */按系统算出来是每组四行。