当前位置:主页>仓库管理软件> 列表

请教一段sql语句的修改。

企业管理软件版1楼: declare @today datetime
select @today=getdate() /*先存起来*/
insert into j22926.dbo.tDayGather(goodsno, storageno, date, qty, money_sales, money_cost)
SELECT wzdm,ckdm,convert(char(10),o_date,111),sum(o_sl) as o_sl,sum(o_zke) as o_zke,SUM(in_jine) AS in_jine
FROM j22926.dbo.vwock
WHERE convert(char(10),o_date,102)=convert(char(10),@today,102)
GROUP BY wzdm,ckdm,convert(char(10),o_date,111)
ORDER BY wzdm,ckdm,convert(char(10),o_date,111)
以上语句是用于每天定时统计当天的销售数据,能将其改成任意指定的某天吗?

2楼: 写个存储过程
将你要统计的某天作为参数了 如客户资料管理软件

3楼: snpl,请祥细解说一下,好吗?

4楼: 使用存储过程,把@today定义为外部输入参数。
Create Procedure 过程名称
@today Datetime
AS
select @today=getdate() /*先存起来*/
insert into j22926.dbo.tDayGather(goodsno, storageno, date, qty, money_sales, money_cost)
SELECT wzdm,ckdm,convert(char(10),o_date,111),sum(o_sl) as o_sl,sum(o_zke) as o_zke,SUM(in_jine) AS in_jine
FROM j22926.dbo.vwock
WHERE convert(char(10),o_date,102)=convert(char(10),@today,102)
GROUP BY wzdm,ckdm,convert(char(10),o_date,111)
ORDER BY wzdm,ckdm,convert(char(10),o_date,111)
然后在Delphi中指定调用这个存储过程的ADO控件的参数值(即你说的任何一天)就OK了。

5楼: 能修改成在查询分析器里使用就能执行的语句吗?

6楼: 如果在应用程序上调用存储过程的话 就不要用getday()函数了 因为这样只会得到当天的
时间 可以这样
Create Procedure 过程名称
@adate Datetime
AS
insert into j22926.dbo.tDayGather(goodsno, storageno, date, qty, money_sales, money_cost)
SELECT wzdm,ckdm,convert(char(10),o_date,111),sum(o_sl) as o_sl,sum(o_zke) as o_zke,SUM(in_jine) AS in_jine
FROM j22926.dbo.vwock
WHERE convert(char(10),o_date,102)=convert(char(10),@adate,102)
GROUP BY wzdm,ckdm,convert(char(10),o_date,111)
ORDER BY wzdm,ckdm,convert(char(10),o_date,111)


如果要在查询分析器里测试的话 你可以直接给adate赋几个值试一下

企业管理软件版7楼: 你们看,这样可以吗?要是改成2005.9-18至2005.9.30又应如何?
declare @today datetime
select @today=convert(datetime,''2005-09-18'')/* getdate() 先存起来*/
insert into j0509hong.dbo.tDayGather(goodsno, storageno, date, qty, money_sales, money_cost)
SELECT wzdm,ckdm,convert(char(10),o_date,111),sum(o_sl) as o_sl,sum(o_zke) as o_zke,SUM(in_jine) AS in_jine
FROM j0509hong.dbo.vwock
WHERE convert(char(10),o_date,102)=convert(char(10),@today,102)
GROUP BY wzdm,ckdm,convert(char(10),o_date,111)
ORDER BY wzdm,ckdm,convert(char(10),o_date,111)

8楼: 如果只能改 select @today=convert(datetime,''2005-09-18'')/* getdate() 先存起来*/ 的话.日期范围不能指定.
如果能改整个SQL应该是没有问题的..
写法和你平时写逻辑表达式是一样的!

9楼: 你可以把getdate()函数改为虚函数,在实际的调用过程中,在给它赋一个具体的日期,你看好不好使

10楼: 不要用today了,改为任意天的指定参数,另外你调用日期的涵数太复杂了用datepart(day,f_date)吧。

11楼: 多人接受答案了。