请问--字符型的字段,可否实现以下复杂的排序、统计?

tata_1980 2004-01-19 11:41:25
运动会比赛成绩表:
----------------------
比赛名称 运动员ID 国家ID 成绩 回合数 成绩单位
男子短跑100M决赛 011 CHN 10'22'' 1 时间
男子短跑100M决赛 012 USA 11'01'' 1 时间
女子乒乓球决赛 013 JAP 5 1 分
女子乒乓球决赛 013 JAP 10 2 分
女子乒乓球决赛 013 JAP 11 3 分
女子乒乓球决赛 014 CHN 21 1 分
女子乒乓球决赛 014 CHN 21 2 分
女子乒乓球决赛 014 CHN 21 3 分
--------------------------------
我的问题:

我想对上表的‘男子短跑100M决赛’按时间排序,对‘女子乒乓球决赛’的得分进行统计(如;014号运动员的21分的次数)。而‘成绩’这个字段的类型是varchar型的。

请问大虾: 这个要求可以实现吗?如何实现呢?
多谢了。给你拜个早年!
...全文
106 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
tata_1980 2004-01-19
  • 打赏
  • 举报
回复
多谢老邹,稍后揭帖!辛苦了
zjcxc 2004-01-19
  • 打赏
  • 举报
回复
--下面是例子

--测试数据
declare @运动会比赛成绩表 table(比赛名称 varchar(20),运动员ID varchar(3),国家ID varchar(3)
,成绩 varchar(10),回合数 int,成绩单位 varchar(10))
insert into @运动会比赛成绩表
select '男子短跑100M决赛','011','CHN','10''22''',1,'时间'
union all select '男子短跑100M决赛','012','USA','11''01''',1,'时间'
union all select '女子乒乓球决赛','013','JAP','5',1,'分'
union all select '女子乒乓球决赛','013','JAP','10',2,'分'
union all select '女子乒乓球决赛','013','JAP','11',3,'分'
union all select '女子乒乓球决赛','014','CHN','21',1,'分'
union all select '女子乒乓球决赛','014','CHN','21',2,'分'
union all select '女子乒乓球决赛','014','CHN','21',3,'分'

--查询
SELECT *
FROM @运动会比赛成绩表
ORDER BY 比赛名称
,CASE 比赛名称 WHEN '男子短跑100M决赛' THEN 成绩 end
,CASE 比赛名称 WHEN '女子乒乓球决赛' THEN cast(成绩 as int) end

/*--测试结果

比赛名称 运动员ID 国家ID 成绩 回合数 成绩单位
-------------------- ----- ---- ---------- ----------- ----------
男子短跑100M决赛 011 CHN 10'22' 1 时间
男子短跑100M决赛 012 USA 11'01' 1 时间
女子乒乓球决赛 013 JAP 5 1 分
女子乒乓球决赛 013 JAP 10 2 分
女子乒乓球决赛 013 JAP 11 3 分
女子乒乓球决赛 014 CHN 21 1 分
女子乒乓球决赛 014 CHN 21 2 分
女子乒乓球决赛 014 CHN 21 3 分

(所影响的行数为 8 行)
--*/
zjcxc 2004-01-19
  • 打赏
  • 举报
回复
--上面错了,改一下:

SELECT *
FROM 运动会比赛成绩表
ORDER BY 比赛名称
,CASE 比赛名称 WHEN '男子短跑100M决赛' THEN 成绩 end
,CASE 比赛名称 WHEN '女子乒乓球决赛' THEN cast(成绩 as int) end
zjcxc 2004-01-19
  • 打赏
  • 举报
回复
--分组排序.
SELECT *
FROM 运动会比赛成绩表
ORDER BY 比赛名称
,CASE 比赛名称 WHEN '男子短跑100M决赛' THEN 成绩 else end
,CASE 比赛名称 WHEN '女子乒乓球决赛' THEN 成绩 else end
tata_1980 2004-01-19
  • 打赏
  • 举报
回复
谢谢大家,我把问题简化一下,用一句话提出来:

‘成绩’这个字段是字符型的,但是当中存储的数据表示的意思可能是:时间型或整型,

我可否在排序,统计时,按照“时间型或整型”来操作,但存取和写入时按字符来操作?

多谢!
zjcxc 2004-01-19
  • 打赏
  • 举报
回复
没看明白楼主的意思:
对‘女子乒乓球决赛’的得分进行统计(如;014号运动员的21分的次数)

这个是什么意思?
welyngj 2004-01-19
  • 打赏
  • 举报
回复
SELECT * FROM 运动会比赛成绩表
ORDER BY (CASE 比赛名称 WHEN '男子短跑100M决赛' THEN 1
WHEN '女子乒乓球决赛' THEN 2) DESC
没有试过
shenanigan 2004-01-19
  • 打赏
  • 举报
回复
select * from table_name where 比赛名称 = '男子短跑100M决赛' order by 国家ID
j9988 2004-01-19
  • 打赏
  • 举报
回复
相同的比赛才排序,不同的比赛排序没意义。
j9988 2004-01-19
  • 打赏
  • 举报
回复
select 运动员ID,count(*)
from table where 成绩='21' and 比赛名称=‘女子乒乓球决赛’
group by 运动员ID

22,210

社区成员

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

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