行转列并排名的问题

wybwml2008 2009-09-01 11:30:39
表Stu_Score中数据如下:
users scoreID kmname kmscore Examid
141200224113 4743 语文 68 18
141201190051 4744 语文 68 18
141202216771 4745 语文 71 18
141203152718 4746 语文 54 18
141204344745 4747 语文 69 18
141205341774 4748 语文 65 18
141206081936 4749 语文 74 18
141206560995 4750 语文 66 18
141207468496 4751 语文 72 18
141208407717 4752 语文 58 18
141209391776 4753 语文 32 18
141210530993 4754 语文 60 18
141212241302 4755 语文 84 18
141215165991 4756 语文 66 18
141216020992 4757 语文 67 18
141216489113 4758 语文 78 18
141217475836 4759 语文 63 18
141218523964 4760 语文 69 18
141219480360 4761 语文 62 18
141221231618 4763 语文 74 18
141222276461 4764 语文 59 18
141223093182 4765 语文 79 18
141224463337 4766 语文 67 18
141225370837 4767 语文 69 18
141226536615 4768 语文 70 18
141228043184 4769 语文 63 18
141228543023 4770 语文 74 18
141229592860 4771 语文 51 18
141230447862 4772 语文 57 18
141231241467 4773 语文 73 18
141232383027 4774 语文 40 18
141233341143 4775 语文 74 18
141245054582 4776 语文 78 18
141200224113 4778 数学 73 18
141200224113 4779 物理 23 18
141200224113 4780 英语 54 18
141201190051 4781 数学 82 18
141201190051 4782 物理 56 18
141201190051 4783 英语 75 18
141202216771 4784 数学 79 18
141202216771 4785 物理 38 18
141202216771 4786 英语 73 18
141203152718 4787 数学 93 18
141203152718 4788 物理 51 18
141203152718 4789 英语 62 18
141204344745 4790 数学 69 18
141204344745 4791 物理 52 18
141204344745 4792 英语 44 18
141205341774 4793 数学 81 18
141205341774 4794 物理 48 18
141205341774 4795 英语 75 18
141206081936 4796 数学 103 18
141206081936 4797 物理 51 18
141206081936 4798 英语 73 18
141206560995 4799 数学 86 18
141206560995 4800 物理 44 18
141206560995 4801 英语 81 18
141207468496 4802 数学 99 18
141207468496 4803 物理 65 18
141207468496 4804 英语 70 18
141208407717 4805 数学 57 18
141208407717 4806 物理 27 18
141208407717 4807 英语 52 18
141209391776 4808 数学 68 18
141209391776 4809 物理 22 18
141209391776 4810 英语 46 18
141210530993 4811 数学 50 18
141210530993 4812 物理 35 18
141210530993 4813 英语 44 18
141212241302 4814 数学 111 18
141212241302 4815 物理 55 18
141212241302 4816 英语 60 18
141215165991 4817 数学 78 18
141215165991 4818 物理 60 18
141215165991 4819 英语 57 18
141216020992 4820 数学 78 18
141216020992 4821 物理 74 18
141216020992 4822 英语 84 18
141216489113 4823 数学 111 18
141216489113 4824 物理 60 18
141216489113 4825 英语 82 18
欲得到如下数据:就是多加一个字段:排名(年级排名或者班级排名)
users scoreID kmname kmscore Examid 排名
141200224113 4743 语文 68 18 ?
141201190051 4744 语文 68 18 ?
141202216771 4745 语文 71 18 ?
141203152718 4746 语文 54 18 ?
141204344745 4747 语文 69 18 ?
141205341774 4748 语文 65 18 ?
141206081936 4749 语文 74 18 ?
141206560995 4750 语文 66 18 ?
141207468496 4751 语文 72 18 ?
141208407717 4752 语文 58 18 ?
141209391776 4753 语文 32 18 ?
141210530993 4754 语文 60 18 ?
141212241302 4755 语文 84 18 ?
141215165991 4756 语文 66 18 ?
141216020992 4757 语文 67 18 ?
141216489113 4758 语文 78 18 ?
141217475836 4759 语文 63 18 ?
141218523964 4760 语文 69 18 ?
141219480360 4761 语文 62 18 ?
141221231618 4763 语文 74 18 ?
141222276461 4764 语文 59 18 ?
141223093182 4765 语文 79 18 ?
141224463337 4766 语文 67 18 ?
141225370837 4767 语文 69 18 ?
141226536615 4768 语文 70 18 ?
141228043184 4769 语文 63 18 ?
141228543023 4770 语文 74 18 ?
141229592860 4771 语文 51 18 ?
141230447862 4772 语文 57 18 ?
141231241467 4773 语文 73 18 ?
141232383027 4774 语文 40 18 ?
141233341143 4775 语文 74 18 ?
141245054582 4776 语文 78 18 ?
141200224113 4778 数学 73 18 ?
141200224113 4779 物理 23 18 ?
141200224113 4780 英语 54 18 ?
141201190051 4781 数学 82 18 ?
141201190051 4782 物理 56 18 ?
141201190051 4783 英语 75 18 ?
141202216771 4784 数学 79 18 ?
141202216771 4785 物理 38 18 ?
141202216771 4786 英语 73 18 ?
141203152718 4787 数学 93 18 ?
141203152718 4788 物理 51 18 ?
141203152718 4789 英语 62 18 ?
141204344745 4790 数学 69 18 ?
141204344745 4791 物理 52 18 ?
141204344745 4792 英语 44 18 ?
141205341774 4793 数学 81 18 ?
141205341774 4794 物理 48 18 ?
141205341774 4795 英语 75 18 ?
141206081936 4796 数学 103 18 ?
141206081936 4797 物理 51 18 ?
141206081936 4798 英语 73 18 ?
141206560995 4799 数学 86 18 ?
141206560995 4800 物理 44 18 ?
141206560995 4801 英语 81 18 ?
141207468496 4802 数学 99 18 ?
141207468496 4803 物理 65 18 ?
141207468496 4804 英语 70 18 ?
141208407717 4805 数学 57 18 ?
141208407717 4806 物理 27 18 ?
141208407717 4807 英语 52 18 ?
141209391776 4808 数学 68 18 ?
141209391776 4809 物理 22 18 ?
141209391776 4810 英语 46 18 ?
141210530993 4811 数学 50 18 ?
141210530993 4812 物理 35 18 ?
141210530993 4813 英语 44 18 ?
141212241302 4814 数学 111 18 ?
141212241302 4815 物理 55 18 ?
141212241302 4816 英语 60 18 ?
141215165991 4817 数学 78 18 ?
141215165991 4818 物理 60 18 ?
141215165991 4819 英语 57 18 ?
141216020992 4820 数学 78 18 ?
141216020992 4821 物理 74 18 ?
141216020992 4822 英语 84 18 ?
141216489113 4823 数学 111 18 ?
141216489113 4824 物理 60 18 ?
...全文
58 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wybwml2008 2009-09-01
  • 打赏
  • 举报
回复
这样就正确了:
select *,排名=(select COUNT(Distinct KMScore) from View_Stu_ExamScore where kmscore>=a.kmScore and KMName=a.KMName and a.Examid=18 and ClassID=-1and wl=1 )
from View_Stu_ExamScore a where a.Examid=18 and ClassID=-1
order by Users
结贴,给分
soft_wsx 2009-09-01
  • 打赏
  • 举报
回复
elect *,排名=(select COUNT(1) from tb where col2>=a.col2) into #a
from tb a
order by 排名

select * from #a where (排名%2)=0
wybwml2008 2009-09-01
  • 打赏
  • 举报
回复
select *,排名=(select COUNT(1) from View_Stu_ExamScore where kmscore>=a.kmScore and KMName=a.KMName and a.Examid=18 and ClassID=-1and wl=1 )
from View_Stu_ExamScore a where a.Examid=18 and ClassID=-1
order by 排名
我这样得到的排名都是偶数的
4755 84 语文 141212241302 02888998984 蒋倩 18 13608010361 4 1 -1 2
4821 74 物理 141216020992 02888998984 康雨枫 18 13808011877 4 1 -1 2
4822 84 英语 141216020992 02888998984 康雨枫 18 13808011877 4 1 -1 2
4875 115 数学 141245054582 02888998984 王夏 18 13438143778 4 1 -1 2
4825 82 英语 141216489113 02888998984 兰宇林 18 13881904780 4 1 -1 4
4765 79 语文 141223093182 02888998984 刘茜 18 13678171953 4 1 -1 4
4803 65 物理 141207468496 02888998984 郭翊航 18 13980539706 4 1 -1 4
4823 111 数学 141216489113 02888998984 兰宇林 18 13881904780 4 1 -1 6
4814 111 数学 141212241302 02888998984 蒋倩 18 13608010361 4 1 -1 6
4876 64 物理 141245054582 02888998984 王夏 18 13438143778 4 1 -1 6
4877 81 英语 141245054582 02888998984 王夏 18 13438143778 4 1 -1 8
4801 81 英语 141206560995 02888998984 高笛 18 13662753645 4 1 -1 8
4776 78 语文 141245054582 02888998984 王夏 18 13438143778 4 1 -1 8
4758 78 语文 141216489113 02888998984 兰宇林 18 13881904780 4 1 -1 8
4796 103 数学 141206081936 02888998984 方一伦 18 15902887826 4 1 -1 10
4842 103 数学 141223093182 02888998984 刘茜 18 13678171953 4 1 -1 10
jiangshun 2009-09-01
  • 打赏
  • 举报
回复

--示例数据
CREATE TABLE tb(Name varchar(10),Score decimal(10,2))
INSERT tb SELECT 'aa',99
UNION ALL SELECT 'bb',56
UNION ALL SELECT 'cc',56
UNION ALL SELECT 'dd',77
UNION ALL SELECT 'ee',78
UNION ALL SELECT 'ff',76
UNION ALL SELECT 'gg',78
UNION ALL SELECT 'ff',50
GO

SELECT *,Place=(SELECT COUNT(DISTINCT Score) FROM tb WHERE Score>=a.Score)
FROM tb a
ORDER BY Place
/*--结果
Name Score Place
---------------- ----------------- -----------
aa 99.00 1
ee 78.00 2
gg 78.00 2
dd 77.00 3
ff 76.00 4
bb 56.00 5
cc 56.00 5
ff 50.00 6
--*/

select * ,Place=RANK() over(order by Score) from tb
/*
Name Score Place
---------- --------------------------------------- --------------------
ff 50.00 1
bb 56.00 2
cc 56.00 2
ff 76.00 4
dd 77.00 5
ee 78.00 6
gg 78.00 6
aa 99.00 8

(8 行受影响)

*/
drop table TB
wybwml2008 2009-09-01
  • 打赏
  • 举报
回复
我得到的排名为什么都是偶数的呢
htl258_Tony 2009-09-01
  • 打赏
  • 举报
回复
简单的问题描述得好像很难理解.
黄_瓜 2009-09-01
  • 打赏
  • 举报
回复
怎么排?
soft_wsx 2009-09-01
  • 打赏
  • 举报
回复
把数据换一下就OK了
Zoezs 2009-09-01
  • 打赏
  • 举报
回复
需要怎么排?
soft_wsx 2009-09-01
  • 打赏
  • 举报
回复
看这个!
if OBJECT_ID('tb') is not null drop table tb
create table tb(id int identity,col1 int,col2 int)
insert tb(col1,col2)
select 134, 554
union all select 134, 553
union all select 134, 552
union all select 134, 551
union all select 150, 600
union all select 134, 555

--2005-2008
select *,排名=row_number() over(order by col2 desc) from tb
--2000方法
select *,排名=(select COUNT(1) from tb where col2>=a.col2)
from tb a
order by 排名
/*
id col1 col2 排名
5 150 600 1
6 134 555 2
1 134 554 3
2 134 553 4
3 134 552 5
4 134 551 6
*/

22,206

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧