在一个页面上同时显示按月销售额排序 按月度销售额排学 按年度销售额排序 均为升序 ,排序我可以做但是让他们都为升序又都按照业务员名称分组,我就卡住了。事例如表:
月度排名 季度排名 年度排名
姓名 套数 金额 排名 姓名 金 额 金额排名 姓名 金 额 金额排名
杨晓 2 1226 1 李里 3491 1 成敏 349155 1
月度排名 季度排名 年度排名
姓名 套数 金额 排名 姓名 金 额 金额排名 姓名 金 额 金额排名
杨晓 2 1226 1 李里 3491 1 成敏 349155 1
月度排名 季度排名 年度排名
姓名 套数 金额 排名 姓名 金额 金额排名 姓名 金额 金额排名
---- ---- ----- ---- ---- ---- ------- ------ ------- --------
杨晓 2 1226 1 李里 3491 1 成敏 349155 1
aaa 2 qqq 2 kkkk 1231 2 afds 456667 2*/
union select '---','---','---'
union all
select * from t order by 季度排名
union all
select * from t order by 年度排名另外 sqlserver 中有一种Table 变量你可以试试。
定义一个零时的Table 每个列都是table 这样三种排序就是横向的了。
上面那个是纵向的。
union要求连接的数据字段一致,但是我的字段不同,怎么办呢感谢以上提供帮助的朋友
--没有的字段用空值代替就可以了....
from vs_paiming a
order by 本月排名
union select 姓名,[本季排名]=(select count(1) from vs_paiming where 本季度金额>=a. 本季度金额)
from vs_paiming a
order by 本季排名效果:第一名要在同一行显示,但是他们不是一个人的纪录
姓名 本月排名 姓名 本季排名
张一 1 李立 1
select 姓名,[本季排名]=identity(int,1,1) into #1 from vs_paiming a order by 本季度金额 descselect * from #1 a join #2 b on a.本月排名=b.本季排名
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.本季排名
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.本季度排名
(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.本季排名
a e
a f
b d
b e
b f
c d
c e
c f
(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.序号
(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.序号
(
select * from t order by 月度排名
union select '---','---','---'
union all
select * from t order by 季度排名
union all
select * from t order by 年度排名
) m
group by 姓名 金额 金额排名