IT猫扑网:您身边最放心的安全下载站! 最新更新| 软件分类| 专题汇总| 手机版

您当前所在位置:IT猫扑网 > 数据库 > MSSQL > 解决SQL Server中Group无法实现的问题

解决SQL Server中Group无法实现的问题

时间:2015-06-28 00:00 来源:IT猫扑网|http://www.itmop.com/ 作者:网管联盟 我要评论(0)

在前一段时间中遇到一个需求..统计某一种商品在某一天中的销售数量,当天没有销售的时候,数量显示0.

这个不能用一般的Group来实现.所以需要变通一下,跟一个有1-31的一个集合来Group.

有2种方案.

planA:

  1. SELECT SUM(ISNULL(BidsTrade_Money, 0))   
  2. AS [MONEY], a.number   
  3. AS [DAY]FROM MASTER..spt_values a      
  4. LEFT JOIN DDPM_T_Comm_BidsTrade b    
  5. ON  a.type = 'p'       
  6.  AND month([BidsTrade_DateCreated])='5'  
  7. AND a.number = DAY(b.[BidsTrade_DateCreated])  
  8. AND YEAR([BidsTrade_DateCreated]) = '2010'  
  9. WHERE a.number BETWEEN 1 AND 31GROUP BY a.numberorder by DAY 

使用MASTER..spt_values(产生一定范围的数字的数字,这里需要产生1-31的数字.)

列

但是这一种方法有缺陷,每一个月不一定都是31天.并且我们配置的SQL账号不一定有权限来访问这个函数.

planB:.通过自定义函数.

自定义函数GetOrderType(比较长- -..)

  1. CREATE function [dbo].[CN80s_FN_GetOrderType](    @tabName nvarchar(2000),      
  2. @keyOrder nvarchar(255))returns nvarchar(100)asbegin    declare @OrderTable nvarchar(255)  --表名     
  3.  declare @OrderName nvarchar(255)  --字段名      
  4. declare @OrderType nvarchar(255)  --字段类型      
  5. declare @OrderPrec nvarchar(50)  --字段长度      
  6. declare @OrderDot int  --点的位置      
  7. declare @s1 nvarchar(100) -- 临时变量1      
  8. declare @s2 nvarchar(100) -- 临时变量2    --去除排序规则    
  9. set @keyorder=REPLACE(@keyorder, ' asc', '')    --求表名、字段名      
  10. set @OrderDot=CHARINDEX('.', @keyorder)      
  11. IF @OrderDot > 0    
  12. BEGIN  
  13. SET @OrderTable = SUBSTRING(@keyorder, 0, @OrderDot)  
  14. SET @OrderName = SUBSTRING(@keyorder, @OrderDot + 1, LEN(@keyorder))   
  15. END      
  16. ELSE    
  17. BEGIN  
  18. SET @OrderTable = @tabName  
  19. SET @OrderName = @keyorder    
  20. END    --去除方括号    set @s1=REPLACE(REPLACE (@OrderTable,'[',''),']','')      
  21. set @s2=REPLACE(REPLACE (@OrderName,'[',''),']','')    --求字段类型、字段长度      
  22. SELECT @OrderType=t.[name], @OrderPrec=c.prec      
  23. FROM sysobjects o       
  24. JOIN syscolumns c on o.id=c.id      
  25. JOIN systypes t on c.xusertype=t.xusertype      
  26. W

    关键词标签:SQL Server

相关阅读 sql server系统表损坏的解决方法 SQL Server asp.net 数据提供程序连接池 SqlServer2005对现有数据进行分区具体步骤 一个Access数据库数据传递的实例方法 为导入文件加上时间戳标记的两种方法 SQL Server 2005 在不允许远程连接的情况下的破解

文章评论
发表评论

热门文章 sql server系统表损坏的解决方法 sql server系统表损坏的解决方法 SqlServer2005对现有数据进行分区具体步骤 SqlServer2005对现有数据进行分区具体步骤 解决SQL Server中Group无法实现的问题 解决SQL Server中Group无法实现的问题 SQL Server 2005降级到2000的正确操作步骤 SQL Server 2005降级到2000的正确操作步骤 手把手教你学会SQL Server镜像操作 手把手教你学会SQL Server镜像操作 实战手记:让百万级数据瞬间导入SQL Server 实战手记:让百万级数据瞬间导入SQL Server

相关下载

人气排行 配置和注册ODBC数据源-odbc数据源配置教程 如何远程备份(还原)SQL2000数据库 SQL2000数据库远程导入(导出)数据 SQL2000和SQL2005数据库服务端口查看或修改 修改Sql Server唯一约束教程 SQL Server 2005降级到2000的正确操作步骤 sql server系统表损坏的解决方法 浅谈JSP JDBC来连接SQL Server 2005的方法 SQL Server创建表语句介绍 MS-SQL2005服务器登录名、角色、数据库用户、角色、架构的关系 如何使用SQL Server中的客户端配置工具 SQL Server 分布式查询:OLE DB连接(一)