当前位置: 代码迷 >> Sql Server >> 【学习 APPLY 和 TOP 用法】,该如何解决
  详细解决方案

【学习 APPLY 和 TOP 用法】,该如何解决

热度:407   发布时间:2016-04-27 17:15:47.0
【学习 APPLY 和 TOP 用法】
SQL code
-- 学习 APPLY 和 TOP 用法------------------------------------- SQL 版本:--------------- Microsoft SQL Server 2005 - 9.00.1399.06 (Intel X86) --    Oct 14 2005 00:33:37 --    Copyright (c) 1988-2005 Microsoft Corporation--    Developer Edition on Windows NT 5.1 (Build 2600: Service Pack 3)-------------------------------------> 创建测试表declare @student table(        ---学生表bj varchar(10),          -- 班级xh char(4),                 -- 学号name varchar(10),         -- 姓名    cj int)                     -- 成绩declare @tj table(            ---统计表bj varchar(10),          -- 班级num int)                 -- 人数  :从学生表中选取对应班级的前num名学生成绩 set nocount on--> 添加测试数据insert @student select '一班' ,'A001','A1',89insert @student select '一班' ,'A002','A2',89insert @student select '一班' ,'A003','A3',59insert @student select '一班' ,'A004','A4',80insert @student select '一班' ,'A005','A5',99insert @student select '一班' ,'A006','A6',100insert @student select '一班' ,'A007','A7',82insert @student select '二班' ,'B001','B1',19insert @student select '二班' ,'B001','B2',81insert @student select '二班' ,'B001','B3',69insert @student select '二班' ,'B001','B4',86insert @student select '二班' ,'B001','B5',88insert @student select '二班' ,'B001','B6',99insert @student select '二班' ,'B001','B7',100insert @student select '二班' ,'B001','B8',90insert @student select '二班' ,'B001','B9',97 insert @tj select '一班',3insert @tj select '二班',5-- 2005.T-SQL select t.bj,s.xh,s.name,s.cjfrom @tj tcross apply (    SELECT TOP(t.num)             with ties       -- 加 with ties,一班将选出4个人(2个人并列第三名)         xh,name,cj     from @student    where t.bj=bj            -- 加where 功能类似于 inner join ;不加类似于 cross join    order by cj desc )sorder by case when t.bj='一班' then 1 else 2 end asc,s.cj desc,s.xh asc    ---排序/*bj         xh   name       cj---------- ---- ---------- -----------一班         A006 A6         100一班         A005 A5         99一班         A001 A1         89一班         A002 A2         89二班         B001 B7         100二班         B001 B6         99二班         B001 B9         97二班         B001 B8         90二班         B001 B5         88*/ 


------解决方案--------------------
学习
------解决方案--------------------
good
------解决方案--------------------

------解决方案--------------------
学习
------解决方案--------------------
学习
------解决方案--------------------
谢谢整理
------解决方案--------------------

------解决方案--------------------
学习~
------解决方案--------------------
学习
  相关解决方案