日期:2014-05-17  浏览次数:20604 次

期初期末求思路和简要例子
表:供应商日结表
求:期初、期末
期初=昨天日结
期末=当天日结
期末又等于=明天的期初

问题:例如输入日期2012-5-3,期初减去1天也就是2012-5-2号,但是2012-5-2号库存为0,所以要查询到2012-5-3日之前的那个日结库存不为零的.
粗略点说就是输入日期A-B,A的期初只减了1 或许A-1库存为0,要求准确的期初,就是要求<A的库存不为0的到期末这天 共3条语句

/* 期初至当天*/
SELECT *
FROM   tb1
WHERE  Datediff(DAY,c_dt,@开始日期__datetime) <= 1 --查询开始日期之后的所有,与之前的1天
       AND Datediff(DAY,c_dt,@结束日期__datetime) >= 0

/*当天*/
SELECT *
FROM   tb1
WHERE datediff(day,c_dt,@结束日期__datetime) =0


/*前天(期初)*/
SELECT *
FROM   tb1
WHERE  datediff(day,c_dt,@开始日期__datetime) =1

------解决方案--------------------
引用:
Quote: 引用:


SELECT * ,(select top 1 库存 from tb1 t2 where t2.c_dt <=t1.c_dt and t2.库存<>0 order by t2.c_dt desc)
FROM   tb1 t1 WHERE  datediff(day,c_dt,@开始日期__datetime) =1 

try this


有的话就输出当前的期初 期末
如果期初美誉就要查询 比期初日期小的 有库存的

t2.c_dt <=t1.c_dt 
有的话,就是相等,
没有的话就是找之前的,就是小于