在一个页面上同时显示按月销售额排序  按月度销售额排学  按年度销售额排序  均为升序 ,排序我可以做但是让他们都为升序又都按照业务员名称分组,我就卡住了。事例如表:
                  月度排名                              季度排名                                                年度排名
 姓名 套数  金额        排名                姓名 金 额 金额排名        姓名 金 额 金额排名
 杨晓 2     1226 1  李里 3491       1       成敏 349155      1

解决方案 »

  1.   

    /*
           月度排名              季度排名              年度排名 
    姓名 套数  金额  排名  姓名  金额  金额排名   姓名    金额    金额排名 
    ---- ---- -----  ----  ----  ----  -------   ------  -------  --------
    杨晓   2    1226  1    李里  3491     1         成敏 349155        1 
    aaa    2     qqq  2    kkkk  1231     2         afds 456667        2*/
      

  2.   

    好久没用过sql了,不知道这样行不行。select * from t order by 月度排名
    union select '---','---','---' 
    union all 
    select * from t order by 季度排名
    union all
    select * from t order by 年度排名另外 sqlserver 中有一种Table 变量你可以试试。
    定义一个零时的Table 每个列都是table 这样三种排序就是横向的了。
    上面那个是纵向的。
      

  3.   

    姓名  本月金额        本月排名                姓名 本季金额 本季排名        姓名 本年金额 本年排名 
    union要求连接的数据字段一致,但是我的字段不同,怎么办呢感谢以上提供帮助的朋友
      

  4.   

    union要求连接的数据字段一致,但是我的字段不同,怎么办呢 
    --没有的字段用空值代替就可以了....
      

  5.   

    以下是我生成排名的查询,如何连接呢,请大家指教,小弟我水平菜菜...select 姓名,[本月排名]=(select   count(1)   from   vs_paiming   where   本月金额数>=a.本月金额数)
      from   vs_paiming   a
    order by 本月排名
    union select 姓名,[本季排名]=(select   count(1)   from   vs_paiming   where   本季度金额>=a. 本季度金额)
      from   vs_paiming   a
    order by 本季排名效果:第一名要在同一行显示,但是他们不是一个人的纪录
    姓名   本月排名        姓名   本季排名
    张一     1           李立        1
      

  6.   

    select 姓名,[本月排名]=identity(int,1,1) into #1 from vs_paiming a order by 本月金额数 desc
    select 姓名,[本季排名]=identity(int,1,1) into #1 from vs_paiming a order by 本季度金额 descselect * from #1 a join #2 b on a.本月排名=b.本季排名
      

  7.   

    select 姓名,[本季排名]=identity(int,1,1) into #2 from vs_paiming a order by 本季度金额 desc
      

  8.   


    select * from 
    (select 姓名,[本月排名]=(select  count(1)  from  vs_paiming  where  本月金额数>=a.本月金额数) 
      from  vs_paiming  a order by 本月排名 )c,
    (select 姓名,[本季排名]=(select  count(1)  from  vs_paiming  where  本季度金额>=a. 本季度金额) 
      from  vs_paiming  a order by 本季排名)d
    where c.本月排名=b.本季排名
      

  9.   

    limpire 兄的方法不错,可是我要写在报表软件里,临时表可能不支持的。我们这的报表软件比较落后- -
    pt1314917 但是分析执行提示where子句有错误,不知道是不是嵌套太多了不能执行...
    select * from
    (select projname,业务员,[本月排名]=(select   count(1)   from   vs_ywyyj   where   本月金额>=a.本月金额)
      from   vs_ywyyj   a
    ) c,(select * from
    (select 业务员,[本季度排名]=(select   count(1)   from   vs_ywyyj   where   本季度金额>=b.本季度金额)
      from   vs_ywyyj   b
    ) d
    where c.本月排名=d.本季度排名
      

  10.   

    select * from 
    (select 姓名,[本月排名]=(select  count(1)  from  vs_paiming  where  本月金额数>=a.本月金额数) 
      from  vs_paiming  a)c,
    (select 姓名,[本季排名]=(select  count(1)  from  vs_paiming  where  本季度金额>=a. 本季度金额) 
      from  vs_paiming  a )d
    where c.本月排名=b.本季排名
      

  11.   

    感谢几位帮忙的朋友,特别是pt1314914这位朋友,你的设计可行,但还是有个问题,如果排名有重复,比如本月排名第12名有3人a,b,c 本季排名第12名有3人d,e ,f,那么查询结果会有9人出现在第十二名,出现重复记录a       d
    a       e
    a       f
    b       d
    b       e
    b       f
    c       d
    c       e
    c       f
      

  12.   

    用 distinct会出错,请问怎么办..
      

  13.   

    select c.姓名,c.本月排名,d.姓名,d.本季排名 from 
    (select 姓名,[本月排名]=(select  count(1)  from  vs_paiming  where  本月金额数>=a.本月金额数) 
    ,序号 = (select count(*) from  vs_paiming  where  本月金额数>a.本月金额数 or(本月金额数=a.本月金额数 and 姓名>a.姓名))
      from  vs_paiming  a)c,
    (select 姓名,[本季排名]=(select  count(1)  from  vs_paiming  where  本季度金额>=a. 本季度金额) 
    ,序号 = (select count(*) from  vs_paiming  where  本季度金额>a.本季度金额 or(本季度金额=a.本季度金额 and 姓名>a.姓名))
      from  vs_paiming  a )d
    where c.序号=b.序号
      

  14.   

    select c.姓名,c.本月排名,d.姓名,d.本季排名 from 
    (select 姓名,[本月排名]=(select  count(1)  from  vs_paiming  where  本月金额数>=a.本月金额数) 
    ,序号 = (select count(*) from  vs_paiming  where  本月金额数>a.本月金额数 or(本月金额数=a.本月金额数 and 姓名>=a.姓名))
      from  vs_paiming  a)c,
    (select 姓名,[本季排名]=(select  count(1)  from  vs_paiming  where  本季度金额>=a. 本季度金额) 
    ,序号 = (select count(*) from  vs_paiming  where  本季度金额>a.本季度金额 or(本季度金额=a.本季度金额 and 姓名>=a.姓名))
      from  vs_paiming  a )d
    where c.序号=d.序号
      

  15.   

    select 姓名 金额 金额排名 from
    (
    select * from t order by 月度排名 
    union select '---','---','---' 
    union all 
    select * from t order by 季度排名 
    union all 
    select * from t order by 年度排名 
    ) m
    group by 姓名 金额 金额排名