`
touchinsert
  • 浏览: 1334756 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

sqlserver的2个遗憾、不足

 
阅读更多

sqlserver是比较好用的了

但是,还是有2个比较不好的地方:

1、存储过程的生成记录集,无法被调用者的sql拿来(截取或调用前就指定一个表变量去承接)使用

2、在sql语句里无法定义临时的函数、存储过程,然后使用它(必须实实在在的建立函数、存储过程,才能使用它们,最后还要删除它们)

sql2005增加了varchar(max),功德无量!

但是select top n SKIP m ... from ...始终没有实现SKIP m,实在不爽——虽然rank over(不过好像是sql2005才出现,效率好像也不低)

RANK ( )OVER ( [ < partition_by_clause > ] < order_by_clause > )

如果两个或多个行与一个排名关联,则每个关联行将得到相同的排名。例如,如果两位顶尖销售员具有同样的 SalesYTD 值,他们将并列第一。由于已有两行排名在前,所以具有下一个最大 SalesYTD 的销售人员将排名第三。因此,RANK 函数并不总返回连续整数。

用于整个查询的排序顺序决定了行在结果集中的显示顺序。这也隐含了行在每个分区中的排名。

USE AdventureWorks;
GO
SELECT i.ProductID, p.Name, i.LocationID, i.Quantity, RANK() OVER (PARTITION BY i.LocationID order by i.Quantity) as RANK
FROM Production.ProductInventory i JOIN Production.Product p 
ON i.ProductID = p.ProductID
ORDER BY p.Name
GO

还有2个想而没有功能的:
1、对于sql的结果,在不知道字段名的情况下按顺序取
2、对于sql的结果,在不知道某字段名是否存在的情况下,条件选择
(如:如果存在fid则取max(fid)否则取max(第一个字段名))
对于2,如果是固定的表或视图,好像可以通过系统表查到某字段名是否存在
但是如果是一个子查询,则不行
分享到:
评论

相关推荐

    SQL Server 2000课程设计案例精编

    《SQL Server 2000课程设计案例精编》是一本专为学习SQL Server 2000设计的教程,旨在通过丰富的实例分析,帮助读者深入理解和熟练运用SQL语言。SQL(Structured Query Language),结构化查询语言,是用于管理关系...

    WPF使用XAML实现对SQL Server数据绑定的方法.pdf

    在本文中,我们将讨论如何在使用WPF(Windows Presentation Foundation)技术进行用户界面开发时,利用XAML(可扩展应用程序标记语言)实现与SQL Server数据库的数据绑定。以下是详细的知识点: 首先,我们来了解...

    SQL Server 2005 课件

    《SQL Server 2005 数据库应用教程》是一份全面深入讲解SQL Server 2005的课程资料,共包含十二个章节。这个压缩包中的PPT文件分别对应了这些章节的部分内容,让我们逐一解析其中可能涵盖的关键知识点。 1. **第1章...

    Log Explorer for SQL Server 2005.rar

    总的来说,Log Explorer for SQL Server 2005是一款强大的日志管理工具,它的存在弥补了SQL Server自带工具在日志分析和恢复方面的不足。通过深入理解和熟练运用这类工具,数据库管理员可以更好地维护数据库的健康,...

    SQl Server Log Explore 4.1

    5. **多数据库支持**:可能可以同时连接并管理多个SQL Server实例和数据库。 6. **用户界面**:具有直观的用户界面,使得操作和理解日志信息更加容易。 从描述中的提示来看,4.2版本可能是4.1的升级,通常升级会...

    SQL Server 2014 .docx.zip

    SQL Server 2014是微软...遗憾的是,文件名"java"并未直接关联到SQL Server 2014,但可能意味着文档中可能涉及Java与SQL Server的集成,如JDBC连接、JPA操作或Spring框架下的数据库访问。具体信息需解压文件后查看。

    用 Visual Basic 访问 MS SQL Server 6.5 的数据库.pdf

    这种方法访问数据库最简便,但遗憾的是,一般书上和文章中只介绍用它来访问 Access、FoxPro 等类型的数据库,而用它来访问像 SQL Server 6.5 这样的大型数据库却未见介绍。事实上 VB 4.0/5.0 的数据库控件的 Connect...

    数据库关系图导出到sql文件 数据库模型图导出到sql文件

    在SqlServer2008R2中,数据库关系图是存在系统表[sysdiagrams]之中的,但是SqlServer2008R2数据库下的“任务——导出数据”却不能将其导出到.sql文件中。为了解决这个问题,我们可以使用以下方法将数据库关系图导出...

    Compare-SQL-Server-2012-and-Informix.rar_2012_informix

    标题中的"Compare-SQL-Server-2012-and-Informix"表明这是一个关于比较Microsoft SQL Server 2012与IBM Informix数据库系统的主题。描述简单明了,直指对比的内容是SQL Server 2012与Informix。标签"2012 informix...

    winForm + sql2005 专业考试机试题

    【winForm + sql2005 专业考试机试题】是一个关于C#编程语言与SQL Server 2005数据库管理系统的实战考核题目集。这个资料可能是2008年度的真实考试题目,对于学习和复习相关技术的人来说具有很高的参考价值。尽管它...

    SQL Server约束增强的两点建议

    遗憾的是,当前的SQL Server不支持这种复合外键约束,所以我们需要通过工作-around来实现,即添加额外的列(CurcuitMaximumCurrent)和多个独立的约束(一个外键约束和一个CHECK约束)。 其次,作者提出了在索引视图...

    Sql Server 2000 行转列的实现(横排)

    这种方法更直观且易于理解,但遗憾的是,SQL Server 2000不支持PIVOT操作,因此需要借助上述的动态SQL和CASE方法。在实际应用中,如果数据量较大或转换规则复杂,可能需要考虑性能优化,如使用临时表或视图,或者...

    VB-SQL.rar_VB SQL 实例_sql_sql vb_vb 连接sql2005

    下面是一个简单的VB连接SQL Server 2005的示例: ```vb Dim conn As New ADODB.Connection Dim rs As New ADODB.Recordset conn.Open "Provider=SQLOLEDB;Data Source=myServerAddress;Initial Catalog=myDataBase...

    各类数据库中的SQL Profiler

    描述中提到的链接可能是一个关于SQL Profiler的博客文章,遗憾的是,由于没有实际的链接内容,我们无法详细讨论其具体内容。通常,这样的博客可能会包含如何设置和解读SQL Profiler跟踪结果,以及如何根据这些信息...

    VB+sql2000的题库系统

    【VB+sql2000的题库系统】是一个基于Visual Basic(VB)编程语言和Microsoft SQL Server 2000数据库管理系统构建的教育软件应用。这个系统设计用于存储、管理和检索各种试题,以供教学或考试使用。通过集成VB与SQL...

    虚拟桌面v1.0

    对于“sqlserver2000教程(下)”这个标签,我们可以推断出该压缩包可能包含与SQL Server 2000相关的学习资源。SQL Server 2000是微软推出的一款关系型数据库管理系统,虽然现在已经被更先进的版本取代,但对初学者...

    SQL+Server+2005+Visual+C#+2005专业开发精解+源代码 书中源代码

    &lt;SQL+Server+2005+Visual+C#+2005专业开发精解+源代码&gt;中的源代码。初学.net。,选用了这本书,感觉不错,源代码给我不少帮助。遗憾的是个别的源码数据库不全。不过整体上还是以本不错的书

    SQL完全手册.pdf

    很遗憾,根据您提供的文件信息,【标题】和【描述】部分并不能提供足够具体的知识点来详细说明,它们只能说明这是一个关于SQL的完全手册的电子书,用于个人学习,不可用于商业用途,并且提到了版权问题。 从【部分...

    SQL聚集函数扩展.pdf

    PIVOT和UNPIVOT是SQL Server中用于数据汇总和分析的两个重要的关系运算符。PIVOT运算符可以将行数据转换为列,执行聚合操作,使得一个表中的行可以通过指定的列的唯一值转换成多个列,从而使数据的查看和分析更加...

Global site tag (gtag.js) - Google Analytics