在SQL查询强制上限COUNT(*)

我使用的是子查询返回的计数为整数值,以我的主查询。 此查询用于重新绑定一个ASP.NET DataGrid和我只有两个字符宽度可用于此列。 我想的宽度限制到两个字符。 所以,我想设置值为99,当计数超过99。我想不通的方式来做到这一点? 我看不出在这里申请一个case语句。

SELECT MEMB_ID, MEMB_Name, SELECT COUNT(*) FROM SessionOrder WHERE SessionOrder.SORD_MEMB_ID = m.MEMB_ID And SessionOrder.SORD_NumberCompleteDownloads <> 0 As MEMB_Downloads, MEMB_JoinDate FROM Member

如何才能做到这一点?

--------------解决方案-------------

CASE表达式可以是这样的:

CASE WHEN COUNT(*) > 99 THEN 99 ELSE COUNT(*) END

似乎有一对夫妇与您现有的查询错误(例如m没有定义)。 通过纠正这些错误的变更进行结果查询看起来是这样的:

SELECT
MEMB_ID,
MEMB_Name,
(
SELECT CASE WHEN COUNT(*) > 99 THEN 99 ELSE COUNT(*) END
FROM SessionOrder
WHERE SessionOrder.SORD_MEMB_ID = MEMB_ID
AND SessionOrder.SORD_NumberCompleteDownloads <> 0
) AS MEMB_Downloads,
MEMB_JoinDate
FROM Member

更换

COUNT(*)

随着

CASE WHEN COUNT(*) > 99 THEN 99 ELSE COUNT(*) END AS YourColumnName

这可能是更有效的一点。 因为它可以停止扫描行,一旦99号为止。

SELECT MEMB_ID ,
MEMB_Name,
( SELECT COUNT(*)
FROM (
SELECT TOP 99 *
FROM SessionOrder
WHERE SessionOrder.SORD_MEMB_ID = MEMB_ID
AND SessionOrder.SORD_NumberCompleteDownloads <> 0
)
Top99
) AS MEMB_Downloads,
MEMB_JoinDate
FROM Member

而不是改变COUNT(*)结果,更好地数最多99:

SELECT
MEMB_ID,
MEMB_Name,
(SELECT COUNT(*)
FROM (
SELECT TOP(99) *
FROM SessionOrder
WHERE SessionOrder.SORD_MEMB_ID = m.MEMB_ID
And SessionOrder.SORD_NumberCompleteDownloads <> 0)
as TOP99_Downloads)
As MEMB_Downloads,
MEMB_JoinDate
FROM Member;

你避免这种方式计算所有下载的时候,你会只显示99无妨。 当然,有人会问是什么,如果不正确,在开始时,为什么不把你的UI层能够显示“超过99”的显示值的点。

情况下,它应该是...

或双UNION如SELECT MEMB_ID,MEMB_Name,SELECT COUNT(*)AS WC从SessionOrder WHERE SessionOrder.SORD_MEMB_ID = m.MEMB_ID而SessionOrder.SORD_NumberCompleteDownloads <> 0和WC = <99作为MEMB_Downloads,MEMB_JoinDate会员UNION SELECT MEMB_ID,MEMB_Name, 99 AS WC从SessionOrder WHERE SessionOrder.SORD_MEMB_ID = m.MEMB_ID而SessionOrder.SORD_NumberCompleteDownloads <> 0和WC> 99作为MEMB_Downloads,MEMB_JoinDate会员

分类:SQL 时间:2012-01-01 人气:0
本文关键词: SQL,TSQL
分享到:

相关文章

  • SQL,PL-SQL和T-SQL之间的区别是什么? 2012-10-16

    SQL,PL-SQL和T-SQL之间的区别是什么? 谁能解释一下这三者之间的差异,并提供场景,每个会贴切使用? --------------解决方案------------- SQL是一种查询语言的集合操作. 这或多或少规范,使用的几乎所有的关系数据库管理系统:SQL服务器,Oracle,MySQL和PostgreSQL,DB2,Informix的等等. PL/SQL是由Oracle专有的过程语言 PL/pgSQL是使用PostgreSQL的过程语言 TSQL是在SQL Server中使用微软专

  • SQLAnywhere的:在Watcom SQL或T-SQL 2012-01-18

    一个一般性的问题. 我开发了Sybase SQL Anywhere的10.为了向后comptibility原因,几乎我们所有的存储过程都写在Transact-SQL. 是否有任何的优势或劣势使用Watcom方言的T-SQL呢? --------------解决方案------------- TSQL的优点: 与Sybase ASE和Microsoft SQL Server的更大的兼容性 TSQL的缺点: 仅在在Watcom-SQL过程中可用的一些语句和功能. 一些例子: 更大的控制权在Watco

  • 在PL / SQL比T-SQL优势? 2012-01-20

    我们可以比较一下T-SQL和PL / SQL? ,我们如何定义它们之间的区别,以及为什么它有什么不同? 一天结束自己的情况是数据定义和数据操作:-S --------------解决方案------------- 它们是不同的,因为它们是由两组不同的程序员编写. 总有解决问题的方法不止一种. 他们超越标准的SQL,因为他们正在寻找的东西,要么是没有标准的,应该已经是一个不错的功能(将出售更多的单位)或他们想要的东西,这将更快地执行(性能是至关重要的在企业数据库). 他们正试图出售自己的产品,所以

  • 排序分隔字符串中的SSIS(通过脚本,TSQL,其他) 2012-07-13

    我有700K-1M行即将在用逗号分隔的字段(其中包括). 我需要保持此列不变,但排序行,以便我能确定重复. 在这项业务的情况下,一,3,空,40是相同的零,40,,3等等. 这可以通过存储过程,脚本组件,TSQL来实现. 我发现这个组件,它不正是我需要的,我只是没有对如何把剧本出来或者怎样把它编译成一个组件的知识! http://sortdedupdelimstring.codeplex.com/ 任何帮助是非常赞赏. 请让我知道,如果我是不清楚的任何地方. --------------解决方案

  • 动态SQL,sp_executesql的,并重建动态SQL语句 - 第2部分 2012-08-01

    第2部分:在他的文章,"动态搜索条件在T-SQL ... 2005 SQL和早前的",厄兰Sommarskog给出了如何使用动态SQL与sp_executesql的一个例子. http://www.sommarskog.se/dyn-search-2005.html#sp_executesql SELECT @sql = -- 19 'SELECT o.OrderID, o.OrderDate, od.UnitPrice, od.Quantity, -- 20 c.CustomerID

  • 集成服务VS原始的SQL(T-SQL) 2012-10-01

    什么时候使用集成服务以及何时将只使用SQL /存储过程? 什么是使用一种或另一种的优势是什么? 如果您是从遗留系统迁移数据,你可以使用SSIS或只是SQL? --------------解决方案------------- 迁移数据从旧系统 如果要迁移从旧系统中的数据,你必须恢复原有系统数据库到新服务器的选项,则不一定需要SSIS. 在新服务器上的T-SQL命令可能会更快地编写脚本和运行比SSIS数据流,如果你正在服用的原始数据全部. 如果旧的数据只能通过链接服务器或通过SSIS访问,那么你最好还

  • 什么是PL / SQL和T-SQL之间的区别? 2012-10-24

    所有我知道的是,前者是Oracle,而后者是SQL Server中. 我认为有些事情可能会在一个与其他比较容易,但有一些事情,我可以在PL,我不能在做T? 是我应该知道的有根本的区别? 如果是这样,它们是什么? --------------解决方案------------- T-SQL和PL / SQL是具有不同的语法,类型系统,变量声明,内置函数和过程,以及编程能力两个完全不同的编程语言. 它们共有的唯一的事情是一个数据库中的SQL语句直接嵌入,以及存储和执行. (在Oracle表格,PL /

  • 是SQL甚至TSQL图灵完成? 2013-03-29

    这今天来到了办公室. 我做这样的事没有计划,但理论上你能写一个编译器的SQL? 乍一看,这似乎我是图灵完备,但非常繁琐许多类的问题. 如果没有图灵完备,那会是什么需要变成这样? 注:我不想做这样写一个编译器在SQL什么,我知道这将是一个愚蠢的事情,因此,如果我们能够避免讨论中,我将不胜感激. --------------解决方案------------- 事实证明,SQL可以图灵完备,即使没有一个真正的"脚本"扩展名,如PL / SQL或PSM(其被设计为真正的编程语言,所以这是有点欺

  • 动态SQL,sp_executesql的,并重建动态SQL语句 - 第1部分 2013-07-27

    第1部分:在他的文章,"动态搜索条件在T-SQL ... 2005 SQL和早前的",厄兰Sommarskog给出了如何使用动态SQL与sp_executesql的一个例子. http://www.sommarskog.se/dyn-search-2005.html#sp_executesql SELECT @sql = -- 19 'SELECT o.OrderID, o.OrderDate, od.UnitPrice, od.Quantity, -- 20 c.CustomerID

  • 关闭日志在SQL服务器/ T-SQL 2013-08-26

    我需要关闭在SQL服务器/ T-SQL日志写入到文件/表格AS400. 我发现,你可以用编译指示去做SQLite中. 然而,我们已经发现,不能在T-SQL存在. 有任何想法吗? 谢谢! --------------解决方案------------- 你需要禁用的链接提交控制. 它提供您使用? .净 DefaultIsolationLevel=Chaos OLEDB(IBMDA400) Extended Properties="Default Isolation Level=NC;Auto Com

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 2.421 (s). 10 q(s)