sql入庫前
『壹』 入庫單的 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