1樓:匿名使用者
select a.物資名稱 ,a.型號, b.銷售日期, b.銷售單價
case(b.狀態)
when 1 then '在庫中'
when 2 then '已銷售'
when 3 then '全部'
endfrom a,b
希望對你有幫助,如有疑惑可繼續追加。
2樓:匿名使用者
如果a表有物資10種,庫存資訊就是10行,可以顯示10行的物資名稱,型號,庫存數,已銷售數和總數,但不能顯示銷售日期和 銷售單價,因為如果兩個合同銷售的是同一樣物資時,時間不同,單價也不同,實際上這時關注的是3個數量。假定有3個合同,合同1銷售的是物資1,合同2和合同3銷售的是物資2,語句應該這麼寫:
select 物資名稱,型號,庫存數,(select sum(已銷售數) from b where b.物資名稱=a.物資名稱) as 已銷售數,庫存數+(select sum(已銷售數) from b where b.
物資名稱=a.物資名稱) as 總數 from a
這就是庫存資訊,總數10行,其中有一行包含合同1的已銷售數,還有一行包含合同2和合同3的已銷售數,其餘8行已銷售數為0.
如果要顯示銷售日期,單價,就不是庫存資訊,是銷售資訊,應該是3行,需要的話可以繼續追問。
3樓:匿名使用者
a b 的表結構呢?
怎樣用 sql 語句,查詢庫存? 20
4樓:匿名使用者
select 商品, 入庫-出庫 as '庫存'
from(select 商品,sum(入庫數量) as '入庫'
from 商品入庫表 group by 商品) tmp_tblrkleft join (select 商品,sum(入庫數量) as '入庫'
from 商品入庫表 group by 商品) tmp_tblck on tmp_tblrk.商品=tmp_tblck.商品
5樓:
如果出庫和入庫是在同一個表裡的話,這可這麼寫:
select 商品,
sum(出庫) as '總出庫',
sum(入庫) as '總入庫',
(sum(總入庫)-sum(總出庫)) as '庫存'
from 流水賬表 group by 商品。
如果出庫和入庫是在兩張表裡記錄的話,則這麼寫:
select i.商品, 入庫總表.總入庫-出庫總表.總出庫 as '庫存'
from(select 商品,sum(入庫) as 總入庫from 入庫表 group by 商品) 入庫總表left join (select 商品,sum(出庫) as 總出庫
from 出庫表 group by 商品) 出庫總表on 入庫總表.商品=出庫總表.商品
6樓:匿名使用者
if exists (select name from sysobjects
where type = 'v' and name = '商品出庫')
drop view 商品出庫
gocreate view 商品出庫'as
select 商品, 入庫-出庫 as '庫存'
from(select 商品,sum(入庫數量) as '入庫'
from 商品入庫表 group by 商品) tmp_tblrk
left join (select 商品,sum(入庫數量) as '入庫'
from 商品入庫表 group by 商品) tmp_tblck on tmp_tblrk.商品=tmp_tblck.商品
go建立該試圖之後 你就可以直接
select * from 商品出庫
就能看到你要的資料。對於sql你自己再調一下就ok。
用sql怎麼實現庫存的先進先出?
7樓:
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.
批次 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)) endelse 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等等. 有問題hi我 8樓:匿名使用者 要用sql做的話,我就想到用儲存過程了。 我的思路如下: 兩層迴圈搞定 外層迴圈發貨表,取出一對pno、num; 內層迴圈對每一個pno、num對應的進貨表做減值操作,更新進貨表相應的資料。首先找到進貨表中與pno對應的批次(inno)存入一個list中,再依次對進貨表中的每一對pon、inno進行計算,並更新進貨表。 內層迴圈做計算: if (ordernum-curnum)>0 then update classsource set num = 0 where pno=orderpno and inno = n; let ordernum =ordernum - curnum; continue foreach; else update classsource set num = (curnum - ordernum) where pno=orderpno and inno = n; exit foreach; end if; 詳細**參看參考資料 我的資料庫是informix, 有返回值的叫function而不是procedure。 所以你看到的是funcion. 9樓:匿名使用者 --先計算每行的sum數量,然後找出比表2的數量多的最小批次批次,然後比該最小批次的批次號還小的批次全部改成0,臨界的那個批次顯示為之前的每行sum數量減去原表數量 select a.貨號,a.批次,case when (合計 - b. 數量) <=0 then 0 when (合計 - b.數量) < a.數量 then (合計 - b. 數量) else a.數量 end as 剩餘數量 from( select *,合計=(select sum(數量) from @tb b where b.批次 <= a.批次) from 入庫明細 a ) a left join (select 貨號,sum(數量) as 數量 from 銷售 group by 貨號) b 10樓:騎檮杌的小哪吒 select n.貨號,n.批次, case when n.countnum - l.數量< 0 then 0 when n.countnum - l.數量》 m.數量 then m.數量 else n.countnum - l.數量 end as 剩餘 from 庫存 m, (select a.貨號,a.批次,sum(b.數量) as countnum from 庫存 a,庫存 b where a.貨號 = b.貨號 and a.批次 >= b.批次 group by a.貨號,a.批次 ) n,銷售 l where m.貨號 = n.貨號 and m.批次 = n.批次 and n.貨號 = l.貨號 用sql語句怎麼實現庫存總量更新 11樓:匿名使用者 --更新前自己先做好備份 update a set a.數量=b.總數量 from 材料庫存表 a innser join (-- 將明細按件號彙總,得到每個件號的總數量select 件號,sum(數量) as 總數量from 庫存明細表 group by 件號) b on a.件號=b.件號 12樓:匿名使用者 update 材料庫存表 set 數量 = (select sum(數量) from 庫存明細表 where 件號 = 材料庫存表.件號) where exists ( select * from 庫存明細表 where 件號 = 材料庫存表.件號) db2通過哦。。 13樓:射手幽靈伊 update 材料庫存表 set 數量 = b.數量 from 材料庫存表 a,( select 件號,sum(數量) 數量) b where a.件號 = b.件號 14樓:匿名使用者 --這個肯定對 試一下親 update a set a.數量=b.數量 from 材料庫存表 a,(select sum(數量) as 數量,件號 from 庫存明細表 group by 件號) b where a. 件號=b.件號 15樓: 假設:材料庫存表:a, 庫存明細表:b update a set 數量 = (select sum(數量) from b where a.件號 = b.件號) keil 編譯完能直接看到彙編 的啊,幹嘛要自己翻譯 int main int argc,char argv memset ifr i arm組合語言實現下列c語言語句 if a b x a b 8 else y a c b 20 gnu彙編語法 a word 1 b word 2 c word 3... 從第一個元素開始一次和其後元素比較,如果相等,先用一個變數記下這個位置,後面的元素全部向前移動,再從剛才記下的位置繼續比較,直到比較完畢,也就是合併完了所有的相同元素。再輸出陣列就行了。for int i 0 i for int j 0 j c語言排序後刪除陣列中重複的數字再排序輸出 include... 參考。如何用51微控制器輸出一個佔空比可調的方波 30 估計你這個是想使用微控制器來驅動dc dc穩壓電源吧。你買stc12系列的微控制器,自帶pwm及adc功能,然後通過輸出電壓及電流值調整頻率輸出,控制mos管驅動高頻變壓器就可以完成了。首先選bai擇一個i o設定為du輸出模式,這個就是zhi...用arm組合語言實現下列c語言語句 ifab
用C語言實現查詢陣列中重複的資料,刪除重複資料後輸出陣列
用c語言實現51微控制器的可調PWN輸出實驗,要求用按鍵s20 s23分別實現不同的佔空比,s20對