请教关于DENSE_RANK()是不可识别的函数名的问题

gdlpc 2010-01-26 09:30:07
各位大师:你们好,
  请教关于DENSE_RANK()是不可识别的函数名的问题
我在使用:SELECT point, DENSE_RANK() OVER(ORDER BY point DESC) FROM TABLE_point

如果数据库是ACCESS2000的,提示:
语法错误(操作符丢失)在查询表达式'DENSE_RANK() OVER(ORDER BY point DESC)'中。

如果数据库是SQLSERVER2000的,提示:
'DENSE_RANK()'是不可识别的 函数名。

请教为什么?是什么问题?如何解决?麻烦了。
十分感谢!
...全文
420 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
gdlpc 2010-01-26
  • 打赏
  • 举报
回复
分太少了,对不起各位
gdlpc 2010-01-26
  • 打赏
  • 举报
回复
可以了,十分感谢!
gdlpc 2010-01-26
  • 打赏
  • 举报
回复
多谢!我没有SQL的基础知识,我是在网页中对数据表进行排名时用到,原来用Delphi时我是用多个内存表作循环处理。现用SQL语句我还是不会。
这个“别名”是字段别名还是其它?
SQL2005我在WIN2003中已成功安装,就是没有SQL2000中的“企业管理器”,等我慢慢看看你的说明再试安装。
--小F-- 2010-01-26
  • 打赏
  • 举报
回复
SQL2005的安装问题汇总
SQL2005 分五个版本,如下所列,
  1.Enterprise(企业版),
2.Development(开发版),
  3.Workgroup,(工作群版)
  4.Standard,(标准版)
  5.Express.(嗯,估且就叫它简易版吧)
  这几个版本,我们究竟应该使用哪一版呢﹖
  这是许多初学SQL2005的人最常问的问题。
  我简单的比较一下 Enterprise, Development 和 Express 等三个版本:以功能言,Enterprise 版和 Development 版的功能一模一样。两者的差别,除了授权不同外,最主要的差别是:
  Enterprise版的数据库引擎只能安装在Win2003Server(或其他Server)。
  如果你想安装在WindowsXP Pro系统上,你应该安装SQL2005Development版(开发版)。
  注:有人问,什么是「数据库引擎」。嗯,数据库引擎是SQL2005的核心,是最主要的数据库管理功能模块。没有它,就不是数据库管理系统了。
  很多人下载 SQL2005Express版,因为它是免费的,可以直接从微软网站上下载。但是,它除了支持的内存比较少外,最主要的是
  它缺少相当于SQL2000下的「企业管理器」和「查询分析器」。
  注:SQL2000下的「企业管理器」和「查询分析器」在SQL2005已合为一,称为 Management Studio。
  因此,如果你是初学者,如果你只是想要在家里学习学习,如果你的环境是 WindowsXP Pro,那么,你应该选择的是 SQL2005Development(开发版),而不是SQL2005Enterprise(企业版)或SQL2005Express(简易版)。
  SQL2005 入门者,你选择正确了吗﹖ 我就是从“ Microsoft.SQL.Server.2005.Enterprise.Edition.DVD-ZWTiSO,请大家下载加速 "
上下载的,说明文件里显示是"标准版和企业版",但是我在安装的时候显示不能满足最低的硬件要求(我的机器的配置:server2003企业版 AMD2800+,512M DDR400内存,系统盘有16G的空闲空间),在组件选择框里,只能看见native client和安装sample 数据库,这究竟是什么原因?2005的硬件要求真的那么高吗? 或者说这到底影响安装和使用吗?
在我不改变硬件的情况下怎么解决上面的问题啊应该是满足硬件要求的,看安装时的提示是什么吧2005数据库安装心得

我的环境是xp sp2 EN,SQL 2005 Dev版,内存512MB。
  首先,我的系统已经使用半年多了,装有VS2003,以前还装过SQL2000,netFramework2.0beta,还有好几个beta版的SQL 2005,可谓十分“肮脏”了,呵呵。最早的时候我下过一个2005EE版,怎么也安装不上,后来发现原来是EE不支持xp =_= ,然后就下了DE版的。

  刚开始安装的时候吓了我一跳,丫的居然要占用我C盘1300多MB!!忍了。(我是把SQL装在F盘的,但是居然还需要C盘1300多MB)。但是却安装失败,看了一下安装日志,天书,不明白。只知道是native client几个组件安装不成功。重复多次问题依旧。

  研究安装包之后,发现里面有两个主要的文件夹,是server和tools。顾名思义,server里面肯定是服务的安装文件了,而tools里面应该是那些工具组件的安装文件。进入tools里面,果然有个setup,运行之,竟然安装成功了,而且只占了我C盘200多MB,好兴奋(没有选择BI,就是那个商业智能组件,太大了)。然后重启电脑(不是必须的,只是一次setup之后系统慢的不行了),进入server目录下面,当然也有一个setup啦,运行之,呵呵,果然是安装服务用的啊。这次也顺利安装成功了。再去看C盘,哈哈,一共只用了我300多MB,竟然节省了1GB。

  当然了,其实一起安装的话,也不一定会用完1300MB的空间的,因为安装结束之后还会自动删除一些垃圾文件的。但是不管怎么说,至少让我能正常安装了。我的C盘只有1400的空闲空间了,不知道起初安装失败是不是跟这有关系。

  至此,SQL 2005已经成功的在我电脑上安家了。安装的时候,如果你的电脑和我的一样是内存不足(小于1GB),性能也不足够大(我的CPU是centrio 1.3G,呵呵,装在本本上了),建议在安装的时候把系统开始是需要运行的服务全都不选择,用的时候再手动运行好了。

  运行Management Studio,嗯,速度还挺快的呢。连接服务器,竟然没有localhost,呵呵,打开server configuration manager,把右边那个MSSQLSERVER运行起来。ok,这次没有问题了。

  使用一切正常,就是发现从sql2000里面备份出来的数据库在2005下只能通过sql语句修改数据,而不能所见及所得的修改,不知道怎么回事。

  btw:后来又把商业智能组件装上了,只用了C盘150MB,开心。SQL2005安装过程提示com+目录问题警告处理

安装sql2005一直失败,以为提示的问题是这个com+目录问题警告所致,找了很久找到这个问题的解决方案
sql2005_STD_X86在XPSP2下安装失败的一点经验
软环境是XPSP2,安装SQL2005_STD_X86版。
故障提示:
1。如果 SQL Server 安装程序失败,安装程序将回滚所安装的系统,但可能不会删除所有 .manifest 文件。解决方法是重命名这些文件,然后重新运行安装程序。有关详细信息,请参阅“如何处理 SQL Server 安装过程中的 COM+ 检查失败问题”。如果未运行 Microsoft 分布式事务处理协调器 (MS DTC),或者,在使用 Microsoft 群集服务器的情况下,如果 MS DTC 不是群集资源,则可能会发生 COM+ 错误。COM+ 依赖于 MS DTC,而 Integration Services 中的消息队列任务依赖于 COM +。如果出现 COM+ 错误,则只有将 COM+ 系统正确配置后,Integration Services 中的消息队列任务才可用。
2。对性能监视器计数器注册表值执行系统配置检查失败。有关详细信息,请参阅自述文件或 SQL Server 联机丛书中的“如何在 SQL Server 2005 中为安装程序增加计数器注册表项值”。
安装中止。
查找联机丛书,有如下提示:
1。Microsoft SQL Server 2005 安装程序检查 COM+ 是否已正确配置。如果发现配置错误,安装程序仍将继续,但是在系统配置检查 (SCC) 报告中显示以下警告:
“如果 SQL Server 安装程序失败,安装程序将回滚所进行的安装,但可能不会删除所有的 .manifest 文件。解决方法是重命名这些文件,然后重新运行安装程序。”
如果未运行 Microsoft 分布式事务处理协调器 (MS DTC),或者,在使用 Microsoft 群集服务器的情况下,如果 MS DTC 不是群集资源,则可能会发生 COM+ 错误。COM+ 依赖于 MS DTC,而 Integration Services 中的消息队列任务依赖于 COM +。如果出现 COM+ 错误,则只有将 COM+ 系统正确配置后,Integration Services 中的消息队列任务才可用。
若要使用消息队列(亦称 MSMQ),请确保 MS DTC 正在运行并且已正确配置。如果 SQL Server 安装在群集上,则 MS DTC 必须是群集资源。
按照下列过程重新安装 COM+。
安装组件服务管理单元
在 Windows 桌面上,单击“开始”,然后单击“运行”。
在“打开”框中,键入 MMC,然后单击“确定”。
在“控制台”窗口中,单击菜单栏上的“文件”,然后单击“添加/删除管理单元”。
在“添加/删除管理单元”窗口,单击“添加”。
在“添加独立管理单元”窗口,从管理单元列表中选择“组件服务”,然后单击“添加”。
单击“关闭”以关闭“添加独立管理单元”窗口,然后单击“确定”以关闭“添加/删除管理单元”窗口。
在“控制台根节点\组件服务”窗口,展开“组件服务”树。这就是当 COM+ 出现问题时,错误消息可能发生的地方。
再次运行 SQL Server 2005 安装程序。如果收到错误消息,请重新安装 COM+。
重新安装 COM+
从控制面板的“添加或删除程序”中,单击“添加/删除 Windows 组件”。
在“Windows 组件向导”中,不对选择做任何更改,单击“下一步”。
一直单击以完成向导,然后再次运行 SQL Server 2005 安装程序。
2。在 SQL Server 安装开始前,Microsoft SQL Server 安装程序中的安装配置检查器 (SCC) 会验证计数器注册表项的值。如果 SCC 无法验证现有的注册表项,或 SCC 无法运行 lodctr.exe 系统程序,则 SCC 检查会失败,致使安装受阻。
错误编辑注册表会严重损坏您的系统。更改注册表项之前,建议您备份计算机中的所有重要数据。
手动设置计数器注册表项的增量
在 Microsoft Windows 2003 或 Windows XP 桌面上,依次单击“开始”、“运行”,然后在“打开”中键入 regedit.exe,再单击“确定”。在 Windows 2000 中,使用 regedt32.exe 启动注册表编辑器。
定位到以下注册表项:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib]
"Last Counter"=dword:00000ed4 (5276)
"LastHelp"=dword:00000ed5 (5277)
上一步的“Last Counter”值 (5276) 必须与以下注册表项中“Perflib\009”的“Counter”项的最大值匹配,并且上一步的“Last Help”值 (5277) 必须与以下注册表项中“Perflib\009”的“Help”项的最大值匹配。
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\009]
注意 009 是英文中的一个示例。“Last Counter”和“Last Help”值是由 Windows 动态分配的;这两个值会因计算机的不同而不同。
如有必要,可修改“\Perflib”项中的“Last Counter”和“Last Help”值的值:在右侧窗格中,右键单击“Last Counter”或“Last Help”,单击“修改”,再单击“Base = "Decimal"”,在“值数据”中设置值,再单击“确定”。如有必要,对另一个项重复以上过程,然后关闭注册表编辑器。
再次运行 SQL Server 安装程序。
解决过程:
COM+检查失败不用说肯定是组件消息队列下的组件没安装或服务没启动。本机没有安装过消息队列,找出系统盘安装消息队列组件,在组件安装中提示MSDTC服务没有启动,在这步晕了长很时间,MSTDC在服务中怎么也找不到,后来想会不会是DTC(脑子有点笨,其实从MSMQ这名称上就应该想到),一看果然有Distributed Transaction Coordinator(DTC),但是这个服务启动不了,后来查找相关资料:MSDTC( Distributed Transaction Coordinator )服务必须在 NT AUTHORITY\NetworkService 帐户下运行;即使是 NT AUTHORITY\Network Service(注意,Network和Service中间有空格)也不行(至于这两个帐户的区别,在网上也没有找到,还望大家不吝赐教 )。如果登录帐户被更改,MSDTC服务会继续运行,但是在执行的时候可能会出错。而且,在事件日志的“应用程序”里面可以发现如下的出错信息:
正在运行 MS DTC 服务的帐户无效。 如果使用 Microsoft Management Console (MMC) 中的“服务”管理单元更改了服务帐户信息,就会发生这种情况。 MS DTC 服务将继续启动。请确认使用“组件服务管理器”更新了 MS DTC 服务帐户信息。
要更改成正确的登录帐户,我们可以:
在服务中找到Distributed Transaction Coordinator服务,选择“属性”;
在“登录”选项卡中,选择“此帐户”,帐户名填写“NT AUTHORITY\NetworkService”,密码为空;
在点击“确定”后重新启动服务。
或者,在命令行下运行 msdtc -uninstall ,卸载 msdtc 服务;
再运行 msdtc -install ,安装 msdtc 服务。
MSTDC服务成功启动,组件服务中“COM+应用程序”可以访问,上面第2项故障没去解决,先试着安装看看有没有错误,令人惊喜,安装检查一切顺利,第2项错误同时也解决了。
当然,解决问题的过程同样的系统环境也不尽相同,在这里谈一下我安装的小挫折,希望可以给碰到相同问题的朋友有些提示作用。sql2005安装过程owc11错误处理

最近安装了很久的sql2005,过程中间出现很多问题,之前的com+目录警告是一个部分,处理过之后还是发现一直无法安装成功,(为此我安装了10+)次才解决问题
在安装过程中发现以下错误
Product : OWC11
Error : 错误 1706。安装程序找不到需要的文件。请检查网络连接或 CD-ROM 驱动器状态。对于这个问题的其他可能的解决方案,请参阅 C:\Program Files\Microsoft Office\OFFICE11\2052\SETUP.CHM。
--------------------------------------------------------------------------------
发现自己的ocw11没有安装导致服务器的有关组件全部无法安装,每次都是安装失败,
在microsoft ocw11下载地址
找到microsoft的ocw11,选择简体中文后下载安装后发现还是出现相同的问题,
把下载下来的ocw11解压缩后观察该ocw11.xml,发现sql 2005的server的setup目录下面有相同文件名文件,再次逐次对比发现该ocw11里面的文件包里面的文件对应的setup里面全部都有,不过发现2个chm的后缀不同,一个是10XX,一个是2052,呵呵,原来是版本不同
直接运行setup目录下面的setup,选择修复或全新安装全部提示错误的文件源,再次观察,把setup目录下面对应的的ocw11文件全部拷贝到硬盘上面,再次运行修复成功,之后安装sql2005终于一路成功,困扰了我2天的问题终于解决,特此把本文于全体学习sql2005的朋友分享,希望大家少走弯路.一起交流sql的有关功能



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/fredrickhu/archive/2009/09/23/4585998.aspx
--小F-- 2010-01-26
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 gdlpc 的回复:]
多谢4楼的fredrickhu :我(笨)还是不会,请问你的
SELECT *,Place=(SELECT COUNT(DISTINCT Score) FROM tb WHERE Score>=a.Score)
FROM tba
ORDER BY Place
中的a是什么?

另外我试过安装sql2005(两CD的那种)先安装CD1还是CD2?,我先安装CD1,安装后没有“企业管理器”,不会用,请简单说明一下2005的安装及用法。
[/Quote]

别名
gdlpc 2010-01-26
  • 打赏
  • 举报
回复
多谢4楼的fredrickhu :我(笨)还是不会,请问你的
SELECT *,Place=(SELECT COUNT(DISTINCT Score) FROM tb WHERE Score>=a.Score)
FROM tb a
ORDER BY Place
中的a是什么?

另外我试过安装sql2005(两CD的那种)先安装CD1还是CD2?,我先安装CD1,安装后没有“企业管理器”,不会用,请简单说明一下2005的安装及用法。
fireman_me 2010-01-26
  • 打赏
  • 举报
回复
不错
Mr_Nice 2010-01-26
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 fredrickhu 的回复:]
SQL code--2000的解决方法
--示例数据CREATETABLE tb(Namevarchar(10),Scoredecimal(10,2))INSERT tbSELECT'aa',99UNIONALLSELECT'bb',56UNIONALLSELECT'cc',56UNIONALLSELECT'dd',77UNIONALLSELECT'ee',78UNIONALLSELECT'ff',76UNIONALLSELECT'gg',78UNIONALLSELECT'ff',50GO--1. 名次生成方式1,Score重复时合并名次SELECT*,Place=(SELECTCOUNT(DISTINCT Score)FROM tbWHERE Score>=a.Score)FROM tb aORDERBY 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
--*/--2. 名次生成方式2,Score重复时保留名次空缺SELECT*,Place=(SELECTCOUNT(Score)FROM tbWHERE Score>a.Score)+1FROM tb aORDERBY Place/*--结果
Name Score Place
--------------- ----------------- -----------
aa 99.00 1
ee 78.00 2
gg 78.00 2
dd 77.00 4
ff 76.00 5
bb 56.00 6
cc 56.00 6
ff 50.00 8
--*/
[/Quote]

2000再复习一下!呵呵,学习...
黄_瓜 2010-01-26
  • 打赏
  • 举报
回复
--演示例题,建一个table
create table rankorder(
orderid int,
qty int
)
go
--插入数据
insert rankorder values(30,10)
insert rankorder values(10,10)
insert rankorder values(80,10)
insert rankorder values(40,10)
insert rankorder values(30,15)
insert rankorder values(30,20)
insert rankorder values(22,20)
insert rankorder values(21,20)
insert rankorder values(10,30)
insert rankorder values(30,30)
insert rankorder values(40,40)
go

--DENSE_RANK在sql 2000中的实现
select identity(int,1,1) as ids, qty
into #t
from rankorder
group by qty
order by qty

select r.orderid,r.qty,t.ids as [DENSE_RANK]
from rankorder r join #t t
on r.qty=t.qty

drop table #t
go
--小F-- 2010-01-26
  • 打赏
  • 举报
回复
--2000的解决方法
--示例数据
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

--1. 名次生成方式1,Score重复时合并名次
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
--*/



--2. 名次生成方式2,Score重复时保留名次空缺
SELECT *,Place=(SELECT COUNT(Score) FROM tb WHERE Score>a.Score)+1
FROM tb a
ORDER BY Place
/*--结果
Name Score Place
--------------- ----------------- -----------
aa 99.00 1
ee 78.00 2
gg 78.00 2
dd 77.00 4
ff 76.00 5
bb 56.00 6
cc 56.00 6
ff 50.00 8
--*/
Mr_Nice 2010-01-26
  • 打赏
  • 举报
回复
在access还有SQL2000里面,都没有这个函数哦!
--小F-- 2010-01-26
  • 打赏
  • 举报
回复
DENSE_RANK()是2005以后才发布的排名函数
黄_瓜 2010-01-26
  • 打赏
  • 举报
回复
2000不能用,那时候DENSE_RANK()还没有出生呢

22,209

社区成员

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

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