急求SQL查询语句--请求支援(100分)

  • 主题发起人 主题发起人 jjid
  • 开始时间 开始时间
J

jjid

Unregistered / Unconfirmed
GUEST, unregistred user!
现有一类似流水帐的表,

含日期的流水( A ) 产品批号( B ) 仓号( C ) 入库数 (D) 出库数(E) 当期库存(F)

其中 A B C 为联合关键字

。。。。
。。。。
2000.05.10.001 B01 C1 100 20 80
2000.05.10.002 B02 C1 90 10 50
2000.05.10.002 B01 C1 10 60 30
2000.05.11.001 B03 C2 70 40 80
。。。
2000.05.14.001 B04 C3 90 50 60
。。。
给定某日期,查出当天最后有那些批品各仓的库存量
注意:
1。批号天天都有新产生的。
2。可能某些批号一直未进出,仅查当天的记录不行,要追溯到“最近”一次的库存。
3。不想再增加临时表。
4。流水转成整型可以作为“最近”的判断依据。

不知道我说清楚没有。




 
当期库存是计算生成的?
 
tquery中
select * from tablename
where b=:b
order by a

再query1.last;
 
说些什么乱七八糟,听不懂!
 
看懂了你的注意,但没有看懂你的要求(或目的)
 
我不知你的具体要求,不过只要记录中能求出日期:下列语句可供你参考:
select B,C Max(日期) where 日期<=给定日期 Groupby B,C
这一句便可以求出所有批号仓库的最后一次交货,你可以新增字段来增加库存字段。
或者使用外部联接来实现。
 
谢谢关心,我的意思是查询历史上某一天当时的库存,
难点在于不能仅仅查询当天的记录,当天的记录中只包含
有发生进出的批号,对于之前尚有库存的批号也要找出来。
 
SELECT A, B, C, D, E
FROM yourtable
WHERE convert(char, A) + convert(char, B) + convert(char, C)
IN (
SELECT convert(char, A) + convert(char, B) + convert(char, C)
FROM yourtable
WHERE 日期 <= '1999-3-1'
group by B, C
)
convert 是SQL Server类型转换函数,你的数据库如果没有此类函数,,只有再想别的方法了
另外,此SQL执行效率低,还是建议使用临时表
 
如果我没有错误的话,上面的语句就是在给定日期前所有批号、仓库的最后一次交易记录:
select B,C Max(日期) where 日期<=给定日期 Groupby B,C
因为我用Max(日期) 就是找出距给定时间最近一批的交易记录,不知我说的对不对?
 
查出某日哪些商品B在哪些仓库C的库存F:
select B,C,F from 表 where
convert(char(20),A)+convert(char(20),B)+convert(char(20),C) in
(select convert(char(20),max(A))+convert(char(20),B)+convert(char(20),C)
from 表 where A<=查询日期)
 
刚才忘了加group by了。
select B,C,F from 表 where
convert(char(20),A)+convert(char(20),B)+convert(char(20),C) in
(select convert(char(20),max(A))+convert(char(20),B)+convert(char(20),C)
from 表 where A<=查询日期 group by B,C)
 
多人接受答案了。
 
后退
顶部