我有表1,分别有字段CITY,STORE,NF,XSE,假如要判断某个城市某个时间段哪些店有连续的销售额,现在问题是如何快速地判断这些店在这个时间段内是否连续?
比如我要查找广州08年全年都有销售额的店
比如我要查找广州08年全年都有销售额的店
解决方案 »
- DBGrideh标题排序
- 求《Programming Microsoft DirectShow for Digital Video and Television》电子书及源码
- 请教文本操作
- 关于reportmachine报表显示问题???在线等待。。。。。。
- 哪个用过EHLIB3.5的?DBGRIDEH这个控件的左上角怎么有个红色的小图标啊?
- Locate查找到相应的结果后如何再调用相同方法查找下一条相应结果的记录?
- 菜鸟小弟有个关于数据库报表的问题,请诸位哥哥姐姐指教
- 趣味题,大家给点意见!答对100分,其它的分享100分:)
- little case! 知道form的名字form1:string ; 怎么换成form1.show
- 如何定义 怎么定义一个 自定义类型 的 常量? 一般 定义好的类型 的 定?义常量 有什么规律或者技巧
- delphi 读取指针数组的数据问题
- 这样在DLL中动态创建组件是不是全都没有释放?会越来越多?
CITY:城市
STORE:店(现在理解为店的编号,而不是名称)
NF:年份,字符串格式,形如"0802"表示08年02月
XSE:销售额要查找广州08年全年都有销售额的店
Select Store,Count(Distinct Substring(NF,3,2)) as YSXEDYFS --YSXEDYFS:有销售额的月份数
from Table
group by Store --按店分组
Having --分组条件
City='广州' --城市为广州
and SUBSTRING (NF,1,2)='08' --08年
and XSE>0 --销售额大于0
and Count(Distinct Substring(NF,3,2)) =12 --统计的不同的月份数为12个月
这样好像不对吧?summon是在内查询语句内,怎么可以放到外查询语句内呢?
不行,没有达到我想要的结果我想要结果出来后,显示各店每个月份的XSE情况
而且你的这种方法只是特别指定了08年,而我的查询条件有可能是07年4月份至09年10月份的情况
查询的月份是动态的
declare @BeginDate dateTime,@EndDate dateTime
set @BeginDate = '2007-04-01'
set @EndDate = '2009-10-01'
Select Store,convert(varchar(7),NF,120) as YF,Sum(XSE) as SumXSE
from Table1
Where 1 =1
and City='广州' --城市为广州
and NF between @BeginDate and @EndDate --时间间隔
and XSE>0 --销售额大于0
group by Store,convert(varchar(7),NF,120) --按店、年、月分组
Having Count(Distinct convert(varchar(7),NF,120))) = datediff(month,@BeginDate,@EndDate) +1 --统计的不同的月份数为两个日期的月份差
不如设计一个表存储了结果
CITE, NF, LX1, LX2, ...LX12 分别表示连续的情况
然后查询的时候直接查询这个表就可以了至于刷新,弄一个触发器,处理处理就可以了
from Table
group by Store --按店分组
Having --分组条件
City='广州' --城市为广州
and NF>='0704' and NF<='0910' --07年4月份至09年10月份
and XSE>0 --销售额大于0
and Count(Distinct NF)=datediff(month,'0704'+'01','0910'+'01')--统计指定两个时间之间的月份数,其中'0704'和'0910'是指定的时间,指定时间的字符串后面+'01'是为了形成“年月日”的格式给DateDiff函数调用上面代码能够判断指定的两个日期间的销售额是否连续,但是你所说的“显示各店每个月份的XSE情况”与你帖子的问题不同,当时没有考虑,
既然这个查询能够查询出连续的店编号,那么你把店编号作为条件再查询一次就能得到各店的每个月份的销售额情况了