SQL Server 2008 R2——ROW_NUMBER() 去掉不同行中相同列的重复内容

USE tempdb
GO
--------------------------------------------------------------------------
IF OBJECT_ID(‘Student‘,‘U‘) IS NOT NULL
DROP TABLE Student
GO

CREATE TABLE Student
(
    StuID NVARCHAR(8) PRIMARY KEY,
    Name NVARCHAR(5)
)
GO

INSERT INTO Student(StuID,Name) VALUES(‘20080001‘,‘Lily‘)
INSERT INTO Student(StuID,Name) VALUES(‘20080002‘,‘Lucy‘)
INSERT INTO Student(StuID,Name) VALUES(‘20080003‘,‘Jack‘)
GO
--------------------------------------------------------------------------
IF OBJECT_ID(‘SltCourse‘,‘U‘) IS NOT NULL
DROP TABLE SltCourse
GO

CREATE TABLE SltCourse    --SelectiveCourse
(
    ID INT PRIMARY KEY IDENTITY(1,1),
    StuID NVARCHAR(8),
    CourseName NVARCHAR(10),
    Score    INT
)
GO

INSERT INTO SltCourse(StuID,CourseName,Score) VALUES(‘20080003‘,‘电脑维修‘,90)
INSERT INTO SltCourse(StuID,CourseName,Score) VALUES(‘20080003‘,‘剪纸‘,80)
INSERT INTO SltCourse(StuID,CourseName,Score) VALUES(‘20080003‘,‘市场策划‘,95)
INSERT INTO SltCourse(StuID,CourseName,Score) VALUES(‘20080003‘,‘信息检索‘,100)

INSERT INTO SltCourse(StuID,CourseName,Score) VALUES(‘20080001‘,‘插花‘,99)
INSERT INTO SltCourse(StuID,CourseName,Score) VALUES(‘20080001‘,‘剪纸‘,96)
INSERT INTO SltCourse(StuID,CourseName,Score) VALUES(‘20080001‘,‘刺绣‘,92)

INSERT INTO SltCourse(StuID,CourseName,Score) VALUES(‘20080002‘,‘插花‘,98)
GO
--------------------------------------------------------------------------
SELECT * FROM Student
GO
SELECT * FROM SltCourse
GO
--------------------------------------------------------------------------
SELECT * FROM Student s,SltCourse sc WHERE s.stuid=sc.stuid
GO
--------------------------------------------------------------------------
WITH ReportCard
AS(
SELECT s.StuID,s.Name,sc.CourseName,sc.Score FROM Student s,SltCourse sc WHERE s.stuid=sc.stuid
)
SELECT  CASE WHEN RowNum=1 THEN StuID   ELSE ‘‘ END AS ID,
        CASE WHEN RowNum=1 THEN Name    ELSE ‘‘ END AS Name,
        CourseName,
        Score
FROM (SELECT *,ROW_NUMBER()  OVER (PARTITION BY StuID,Name ORDER BY Score) AS RowNum FROM ReportCard) TBL
GO
--------------------------------------------------------------------------
DROP TABLE Student
GO
DROP TABLE SltCourse
GO

USE tempdb
GO
--------------------------------------------------------------------------
IF OBJECT_ID(‘Student‘,‘U‘) IS NOT NULL
DROP TABLE Student
GO

CREATE TABLE Student
(
    StuID NVARCHAR(8) PRIMARY KEY,
    Name NVARCHAR(5),
    EntranceTime DATETIME
)
GO

INSERT INTO Student(StuID,Name,EntranceTime) VALUES(‘20080001‘,‘Lily‘,‘2008-08-27‘)
INSERT INTO Student(StuID,Name,EntranceTime) VALUES(‘20090002‘,‘Lucy‘,‘2009-08-26‘)
INSERT INTO Student(StuID,Name,EntranceTime) VALUES(‘20070003‘,‘Jack‘,‘2007-08-28‘)
GO
--------------------------------------------------------------------------
IF OBJECT_ID(‘SltCourse‘,‘U‘) IS NOT NULL
DROP TABLE SltCourse
GO

CREATE TABLE SltCourse    --SelectiveCourse
(
    ID INT PRIMARY KEY IDENTITY(1,1),
    StuID NVARCHAR(8),
    CourseName NVARCHAR(10),
    Score    INT
)
GO

INSERT INTO SltCourse(StuID,CourseName,Score) VALUES(‘20070003‘,‘电脑维修‘,90)
INSERT INTO SltCourse(StuID,CourseName,Score) VALUES(‘20070003‘,‘剪纸‘,80)
INSERT INTO SltCourse(StuID,CourseName,Score) VALUES(‘20070003‘,‘市场策划‘,95)
INSERT INTO SltCourse(StuID,CourseName,Score) VALUES(‘20070003‘,‘信息检索‘,100)

INSERT INTO SltCourse(StuID,CourseName,Score) VALUES(‘20080001‘,‘插花‘,99)
INSERT INTO SltCourse(StuID,CourseName,Score) VALUES(‘20080001‘,‘剪纸‘,96)
INSERT INTO SltCourse(StuID,CourseName,Score) VALUES(‘20080001‘,‘刺绣‘,92)

INSERT INTO SltCourse(StuID,CourseName,Score) VALUES(‘20090002‘,‘插花‘,98)
GO
--------------------------------------------------------------------------
SELECT * FROM Student
GO
SELECT * FROM SltCourse
GO
--------------------------------------------------------------------------
SELECT * FROM Student s,SltCourse sc WHERE s.stuid=sc.stuid
GO
--------------------------------------------------------------------------
WITH ReportCard
AS(
SELECT s.StuID,s.Name,s.EntranceTime,sc.CourseName,sc.Score FROM Student s,SltCourse sc WHERE s.stuid=sc.stuid
)
SELECT  CASE WHEN RowNum=1 THEN StuID          ELSE ‘‘ END AS ID,
        CASE WHEN RowNum=1 THEN Name            ELSE ‘‘ END AS Name,
        CASE WHEN RowNum=1 THEN EntranceTime    ELSE ‘‘ END AS EntranceTime,
        CourseName,
        Score
FROM (SELECT *,ROW_NUMBER()  OVER (PARTITION BY StuID,Name,EntranceTime ORDER BY Score) AS RowNum FROM ReportCard) TBL
GO
--------------------------------------------------------------------------
DROP TABLE Student
GO
DROP TABLE SltCourse
GO

  

WITH ReportCard
AS(
SELECT s.StuID,s.Name,s.EntranceTime,sc.CourseName,sc.Score FROM Student s,SltCourse sc WHERE s.stuid=sc.stuid
)
SELECT  CASE WHEN RowNum=1 THEN StuID          ELSE ‘‘ END AS ID,
        CASE WHEN RowNum=1 THEN Name            ELSE ‘‘ END AS Name,
        CASE WHEN RowNum=1 THEN EntranceTime    ELSE cast(nullif(‘‘,‘‘) as datetime) END AS EntranceTime,
        CourseName,
        Score
FROM (SELECT *,ROW_NUMBER()  OVER (PARTITION BY StuID,Name,EntranceTime ORDER BY Score) AS RowNum FROM ReportCard) TBL
GO

  

时间: 2024-10-06 15:49:42

SQL Server 2008 R2——ROW_NUMBER() 去掉不同行中相同列的重复内容的相关文章

安装 SQL Server 2008 R2 的硬件和软件要求(转)

以下各部分列出了安装和运行 SQL Server 2008 R2 的最低硬件和软件要求.有关 SharePoint 集成模式下的 Analysis Services 的要求的详细信息,请参阅硬件和软件要求 (PowerPivot for SharePoint). 对于 SQL Server 2008 R2 的 32 位和 64 位版本,适用以下要求: SQL Server 2008 R2 Datacenter 有评估版可供使用,试用期为 180 天.有关详细信息,请参阅 SQL Server:

Microsoft SQL Server 2008 R2完全卸载再安装手册

  Microsoft SQL Server 2008 R2安装后,可能一些原因导致程序故障,需要重新安装,但是卸载后,很难再进行安装,基本都会报错,导致程序无法正常安装使用,以下是亲测有效的方法,屡试不爽,以及一些其它可能出现的问题,如参照以下方法仍旧不能解决,建议重新安装系统,再安装数据库,这是最简单最有效的方法,. 第一部分完全卸载Microsoft SQL server 2008 R2 首先进入控制面板:鼠标左键点击左下角windows图标键 2. 进入后选择程序和功能 找到Micros

SQL Server 2008 R2——PIVOT 行转列 以及聚合函数的选择

原文:SQL Server 2008 R2--PIVOT 行转列 以及聚合函数的选择 ==================================声明================================== 本文原创,转载在正文中显要的注明作者和出处,并保证文章的完整性. 未经作者同意请勿修改(包括本声明),保留法律追究的权利. 未经作者同意请勿用于学术性引用. 未经作者同意请勿用于商业出版.商业印刷.商业引用. 本文不定期修正完善,为保证内容正确,建议移步原文处阅读. 本文

Microsoft SQL SERVER 2008 R2 REPORT SERVICE 匿名登录

SQL SERVER 2008 R2 是微软目前最新的数据库版本,在之前的SQL SERVER 2005中,我们可以通过修改IIS对应的SSRS站点及SSRS的配置文件,将SSRS配置成匿名登录的方式,把报表集成到系统中,而现在SSRS2008 R2已经和IIS完全分离,所以说我们在沿用2005的配置方法是不可行的,为了让大家能够更好的了解,下面将先给大家简单介绍一下我在开发过程中,遇到的集成SSRS报表的场景.不同的集成有不同的解决方案. 1.ASP.net中集成SSRS的报表,这种集成方式,

SQL Server 2008 R2没有卸载干净

在卸载Microsoft SQL Server 2008 R2 安装程序(简体中文) 出现 :“警告 26003.无法卸载 Microsoft SQL Server 2008 R2 安装程序支持文件,因为安装了以下产品:SQL Server 2008 R2 SP1 Database Engine Shared SQL Server 2008 R2 SP1 Common Files”.但是在程序列表中并未找到该程序,在网上找了找资料,可以使用 WMIC(Windows Management Ins

SQL Server 2008 R2 升级到 Service Pack 3后Report Builder启动不了

一同事将测试服务器从SQL Server 2008 R2 SP2升级到了SQL Server 2008 R2 SP3后发现Report Service的报表编辑时启动不了Report Builder,错误信息如下所示: PLATFORM VERSION INFO     Windows             : 6.1.7601.65536 (Win32NT)     Common Language Runtime     : 4.0.30319.18408     System.Deploy

SQL Server 2008 R2 附加数据库 “尝试打开或创建物理文件 拒绝访问”的解决办法

其实是来自一篇SQL Server 2005同样错误的帖子,不过试了在SQL Server 2008 R2下面也有效,记录一下. 解决方法: 在所有程序—Microsoft SQL Server 2008 R2—配置工具—SQL Server 配置管理器,点击"SQL Server 服务",右边会显示正在运行的服务,以及对应的用户,右击SQL Server (MSSQLSERVER),选择“属性”,把内置帐户选择为"Local System",点击重新启动就OK了.

sql server 2008 r2 修改sa密码 通过sql server 身份验证登陆

sql server 2008 r2 修改sa密码 通过sql server 身份验证登陆 解决方法如下 通过windows 身份验证登陆后, 首先选中服务器(右键)->属性 ->安全性->服务器身份验证修改为"SQL SERVER和WINDOWS身份验证模式"其次展开服务器上的"安全性"->登陆名->选中SA登陆帐号(右键)->状态->登陆修改为启用, 并在常规选项中修改密码 确认后重启 sel server sql se

Sql Server 2008 R2 数据库脚本导出方法

经常忘记怎么搞,截几张图记录一下. 1 选中要导出的数据库,右键->任务->生成脚本 2 3 4 查看保存的脚本 Sql Server 2008 R2 数据库脚本导出方法,布布扣,bubuko.com