当前位置:首页 > 系统运维 > 正文内容

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

a8116255316年前 (2010-08-03)系统运维11

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

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

有2种方案.

planA:

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

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

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

Code highlighting produced by Actipro CodeHighlighter (freeware)

-->USE [CN80s.DDPM]

SET ANSI_NULLS ON

go

CREATE function [dbo].[FormatDateTime](@Date datetime,@formatStr varchar(20))

begin

declare @tempformat varchar(20)

if @formatStr='MM/DD/yyYY'

set @retstr = Convert(char(10),@Date,20)

set @retstr= Convert(varchar(10),@Date,102)

set @retstr= Convert(varchar(10),@Date,111)

set @retstr= Convert(varchar(10),@Date,103)

set @retstr= Convert(varchar(10),@Date,104)

set @retstr= Convert(varchar(10),@Date,105)

set @retstr= Convert(varchar(10),@Date,112)

begin

begin

set @str2=left(@str2,@index-1)

select @tempstr = Convert(char(10),@Date,20),@str1=isnull(@str1,''),@str2=isnull(@str2,''),@str3=isnull(@str3,''),@j=0

begin

select @retstr=left(@tempstr,@index-1)+@str1,@j=@j+1

select @tempstr=right(@tempstr,len(@tempstr)-@index)

set @retstr=@retstr+@tempstr+@str3

return @retstr

可以看看调用这个函数的结果.

SELECT * FROM CN80s_DDPM_FN_GETDATE('2010-05-1','2010-05-31',null

参数依次为:开始时间,结束时间,显示状态(null:显示所有日期,0显示所有工作日(星期一~星期五),1:显示周末,2显示周末)

当然这个函数有其他的扩展应用请各位看官天马行空.~

实际应用,这里写了一个存储过程 

SELECT a.day , isnull(BidsCombo_Price,0) as   BidsCombo_Price, isnull( BidsTrade_Count,0) as    BidsTrade_CountFROM (          SELECT year(Dateas year,month(Dateas month,day(Dateas [dayFROM dbo.CN80s_DDPM_FN_GETDATE(@beginTime,@endTime,NULL) ) a       LEFT JOIN          DDPM_V_BidsTradeRecount b          ON  a.day = b.day          AND a.year=b.year          AND a.month=b.month    GO 

原文标题:一个SQL Group问题

链接:http://www.cnblogs.com/willsonchan/archive/2010/08/01/1789980.html

扫描二维码推送至手机访问。

版权声明:本文由2345好导航站长资讯发布,如需转载请注明出处。

本文链接:http://www.2345hao.cn/blog/index.php/post/22291.html

分享给朋友:

“解决SQL Server中Group无法实现的问题” 的相关文章

windows 7鼠标停顿怎么办?windows 7 usb鼠标停顿的原因以及解决

windows 7鼠标停顿怎么办?windows 7 usb鼠标停顿的原因以及解决

很多使用Windows 7系统的朋友都想小编反应,假如暂停使用电脑,鼠标会出现停顿现象,这是怎么回事呢 该怎么解决呢 下面就和小编一起去看下Windows 7 usb鼠标停顿的解决方法吧。 由于Windows 7系统中有一项USB选择性暂停造成的。这项设置主要为了节电,当他检测到用户没有对系统进行...

windows 7系统如何设置休眠时不断网以便继续完成下载

windows 7系统如何设置休眠时不断网以便继续完成下载

在Windows 7系统的默认设置中,当Windows 7系统处于休眠状态时,会同时断网的。如此一来,无论你正在使用迅雷还是快车等下载工具,同样可以在休眠状态下继续完成下载,最大限度做到从身边的小事开始支持环保。下面我们就详细介绍操作步骤,帮助Windows 7系统用户实现这一节能目标。 首先需要...

windows 7系统开机后出现黑屏提示Windows无法启动

windows 7系统开机后出现黑屏提示Windows无法启动

一些用户的Windows 7系统开机后出现黑屏,代码为 Windows无法启动: WindowsSystem32ConfigSystem”。这个问题该如何修复呢?现在小编就给大家分析一下吧。 其实这个代码的意思是引导文件丢失了,引导文件(NTLDR)一般存放于C盘根目录下,是一个具有隐藏和只读属性...

Windows7截图出现黑屏导致截的图黑呼呼一片

Windows7截图出现黑屏导致截的图黑呼呼一片

最近一些Windows 7用户反馈说,自己在截屏的时候出现黑屏,导致自己截的图黑呼呼一片。这个问题该怎么解决?今天小编就为大家提供一个解决的方法。 步骤 1 在windows xp时代,很多用户都曾被视频截图后的“全黑图片”困扰。对此,在解决本地播放时出现的截图变黑问题,一般有两个方法可以用来解...

Ubuntu 14.10上安装新的字体图文教程

Ubuntu 14.10上安装新的字体图文教程

像Ubuntu这种开源系统,一般都自带有好多漂亮的字体,不过假如您想使用您熟悉的字体,可以通过在Ubuntu或其它Linux系统上安装字体,帮助用户在使用开源OS平台上更好的视图体验。 软件名称:Ubuntu 14.04 官方正式版软件大小:752MB更新时间:2014-05-07 Ubun...

3个实用的windows 7 DOS操作系统技巧

3个实用的windows 7 DOS操作系统技巧

       1. 快速复制粘贴文字   有时我们需要复制命令提示符窗口中的某些文字内容,但是之前的Windows系统中常规的复制粘贴方法是无效的,而在Windows 7中我们可以通过简单方法来复制文字:首先在任意位置右击鼠标并选择“标记...