当前位置:首页 » 编程语言 » sql入库前

sql入库前

发布时间: 2022-03-07 19:02:53

‘壹’ 入库单的 sql 操作

你可以增加一个实时库存表,保留产品的实时库存,实时库存表根据产品、批次进行存储,增加批次是为了先进先出,然后在入库的时候根据产品检查实时库存表商品是否存在,存在则修改数量,不存在则插入产品。

‘贰’ 怎么用sql实现库存先进先出

create table 表1(货号 varchar(20),批次 int ,数量 int)

create table 表2(货号 varchar(20) ,数量 int)
/*------------------------------*/
insert into 表1
select '001', 1, 100 union all
select '001', 2, 200 union all
select '001', 3, 300

/*------------------------------*/
insert into 表2
select '001', 400
/*------------------------------*/
select * from 表1

select * from 表2
/*------------------------------*/
select t1.货号,t1.批次,
case when ((select isnull(sum(数量),0) from 表1 t3 where t3.货号=t1.货号 and t3.批次<t1.批次)-isnull(t2.new_数量,0))<0
then case when ((select sum(数量) from 表1 t4 where t4.货号=t1.货号 and t4.批次<=t1.批次)-isnull(t2.new_数量,0))<0 then 0
else ((select sum(数量) from 表1 t4 where t4.货号=t1.货号 and t4.批次<=t1.批次)-isnull(t2.new_数量,0))
end
else t1.数量
end as 批次剩余库存数
from 表1 t1
left join (select 货号,sum(数量) as new_数量 from 表2 group by 货号) t2
on t1.货号=t2.货号
/*------------------------------*/

PS:上面将null转换为0的函数为isnull,是SQL SERVER下的函数,你只要根据你的数据转换为对应函数就可以了,如oracle是nvl,mysql是ifnull等等.

‘叁’ sql,查询语句怎么写,返回入库时间,表(日期,数量)

首先,我觉得你问题中说的要选出“求数量和大于库存的条件记录日期”,那这个日期难道不应该是20140408, 因为只有在这一记录进入是,当时的数量和才大于当前库存。


如果我的理解是对的,你可以用下面的语句来实现:

SELECTtop1t1.in_date
FROMtest1t1
LEFTJOINtest1t2
ONt1.in_date>=t2.in_date
ANDt1.qty>0
GROUPBYt1.in_date
HAVINGSUM(t2.qty)>150
ORDERBYin_date
--output:
--20140408


如果你是在存储过程或Job中写这个逻辑,完全可以用游标去做,更加灵活。

‘肆’ sql有入库时间和出库时间如何得到每日库存

大概思路...每月期初数量+今日到当月1号的入库加总-今日到当月1号的出库加总=今日库存
当然同样思路可以推算出以前某个时间点的库存...只要把握好时间某点就OK了...
SQL语句自己根据自己的Table写...很简单的

‘伍’ SQL怎样实现入库

不太明白你的问题,能不能说清楚一点
入什么库?

‘陆’ sql server 关于文件入库的问题

我其实想问的是,如果产生没有数据的时候,你们用什么来代替,就像你说的,不能用空格,那么这么说,只能用字符长度了,如果说第二个没有也就是空的话,那么只剩下第三个了,可是第三个和第二个是一样的字符串长度,那么怎么判定缺的那个是第二个还是第三个,如果不用字符串长度的话,那么你怎么分割字符串。所以说,你还是给你的空值加个标示吧,不然的话,分不出来到底是第二个字段是空还是第三个字段是空。

‘柒’ sql怎么知道数据是否入库

是不是就是说你的数据库是vs自带的那个?
如果是的话
其实也是一样的
打开vs,在服务器资源管理器里找到你要查询的那个数据库,找到那个表后右击有个“显示表数据”,就可以看到是否插入了数据。

‘捌’ sql在入库数量满足订单要求之前循环相加

这个没可能用一句sql写得出来吧,要么写存储过程,要么用后台脚本跑(比如PHP)
//先拿到整个数据
$result = mysql_query('select * from tb');
//边累加边跑循环
$sum = 0;
while($arr = mysql_fetch_assoc($result))
{
$sum += $arr[数量];

if($sum >= 10000){
die($arr[入库时间]);
}

}

‘玖’ sqL中查询时间9月的入库记录的SQL语句怎么写

select * from rk where rkDate between '2009-9-1' and '2009-9-30'

‘拾’ 入库出库表,求库存,这个sql如何写

把问题简化了说
--入库数(一个sql从入库表中按天分组汇总统计出来的)
日期 当天入库
--出库数据(一个sql从出库表中按天分组统计出来的)
日期 当天出库
--求下面的结果
日期 入库/出库类型 数量 库存
------解决方案--------------------------------------------------------SQL code USE TEMPDB GO IF OBJECT_ID('TB_IN') IS NOT NULL DROP TABLE TB_IN IF OBJECT_ID('TB_OUT') IS NOT NULL DROP TABLE TB_OUT GO CREATE TABLE TB_IN( IN_DATE DATETIME ,TOTAL INT ) CREATE TABLE TB_OUT( OUT_DATE DATETIME ,TOTAL INT ) INSERT INTO TB_IN SELECT '2012-02-20', 1000 UNION ALL SELECT '2012-02-22', 1500 INSERT INTO TB_OUT SELECT '2012-02-20', 500 UNION ALL SELECT '2012-02-21', 300 UNION ALL SELECT '2012-02-22', 500 UNION ALL SELECT '2012-02-24', 400 GO ;WITH MU AS ( SELECT *,ROW_NUMBER() OVER(ORDER BY CHANGE_DATE,CASE WHEN TYPE='入库' THEN 1 ELSE 2 END) AS ROW FROM ( SELECT IN_DATE AS CHANGE_DATE,TOTAL,'入库' AS TYPE FROM TB_IN UNION ALL SELECT OUT_DATE,0-TOTAL,'出库' AS TYPE FROM TB_OUT ) T ) ,MU2 AS ( SELECT *,TOTAL AS [库存] FROM MU WHERE ROW=1 UNION ALL SELECT T1.*,T2.[库存]+T1.TOTAL FROM MU T1 INNER JOIN MU2 T2 ON T1.ROW=T2.ROW+1 ) SELECT CHANGE_DATE AS [日期],TYPE AS [类型], ABS(TOTAL) AS [变更数量],[库存] FROM MU2 /* 日期 类型 变更数量 库存 2012-02-20 00:00:00.000 入库 1000 1000 2012-02-20 00:00:00.000 出库 500 500 2012-02-21 00:00:00.000 出库 300 200 2012-02-22 00:00:00.000 入库 1500 1700 2012-02-22 00:00:00.000 出库 500 1200 2012-02-24 00:00:00.000 出库 400 800 */
------解决方案-------------------------------------------------------- 最好有一个递增ID,SQL2005以上版本可以用ROW_NUMBER()产生ID,下面是用临时表,好理解点
SQL code declare @t1 table (D datetime,Qty float) declare @t2 table (D datetime,Qty float) insert into @t1 select '2012-02-20', 1000 union all select '2012-02-22', 1500 insert into @t2 select '2012-02-20', 500 union all select '2012-02-21', 300 union all select '2012-02-22', 500 union all select '2012-02-24', 400 select identity(int,1,1) as id,* into #t from (select D,Qty In_Qty,0 Out_Qty from @t1 union all select D,0,Qty from @t2) t order by D,In_Qty desc select D as '日期', case when In_Qty>0 then '入库' else '出库' end as '入库/出库类型', case when In_Qty>0 then In_qty else Out_Qty end as '数量', (select sum(In_Qty)-sum(Out_Qty) from #t where id0 then '入库' else '出库' end as '入库/出库类型', case when In_Qty>0 then In_qty else Out_Qty end as '数量', (select sum(In_Qty)-sum(Out_Qty) from #t where id

热点内容
怎么看java 发布:2025-01-13 13:54:18 浏览:10
没脚本导演 发布:2025-01-13 13:52:22 浏览:339
获取android签名 发布:2025-01-13 13:40:21 浏览:595
单片机编译器和驱动 发布:2025-01-13 13:31:33 浏览:440
tis服务器怎么进pe 发布:2025-01-13 13:31:02 浏览:277
android线程与线程通信 发布:2025-01-13 13:30:27 浏览:39
FTP服务器本地策略 发布:2025-01-13 13:20:47 浏览:486
地下城堡2挂机脚本 发布:2025-01-13 13:20:44 浏览:206
web云服务器配置 发布:2025-01-13 13:19:54 浏览:460
小康密码是多少 发布:2025-01-13 13:19:13 浏览:42