解决SQL Server中Group无法实现的问题_绿色软件之家

绿色软件之家:您身边最放心的安全下载站! 最新更新|软件分类|软件专题|手机版|论坛转贴|软件发布

您当前所在位置: 首页数据库MSSQL → 解决SQL Server中Group无法实现的问题

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

时间:2015-06-28 00:00:00 来源:绿色软件之家 作者:网管联盟 我要评论(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

相关阅读

文章评论
发表评论

热门文章 浅谈JSP JDBC来连接SQL Server 2005的方法 浅谈JSP JDBC来连接SQL Server 2005的方法 SqlServer2005对现有数据进行分区具体步骤 SqlServer2005对现有数据进行分区具体步骤 sql server系统表损坏的解决方法 sql server系统表损坏的解决方法 MS-SQL2005服务器登录名、角色、数据库用户、角色、架构的关系 MS-SQL2005服务器登录名、角色、数据库用户、角色、架构的关系

相关下载

人气排行 配置和注册ODBC数据源-odbc数据源配置教程 如何远程备份(还原)SQL2000数据库 SQL2000数据库远程导入(导出)数据 SQL2000和SQL2005数据库服务端口查看或修改 修改Sql Server唯一约束教程 SQL Server 2005降级到2000的正确操作步骤 sql server系统表损坏的解决方法 浅谈JSP JDBC来连接SQL Server 2005的方法