2011-12-20 7 views
0

Visual Studio 2005とSQL Server 2000を使用してvb.netでアプリケーションを作成しています。在庫を追跡しなければなりません。追加された在庫のステータスは「未販売」に設定されています。一部の在庫が削除されると、取引は在庫のステータスを「売却済み」として保持します。有効期限が切れている株式のステータスが「有効期限切れ」になっていて、有効期限が切れている株式が会社に請求されている場合は、ステータスが「請求済み」になっている可能性があります...今のところ、現在手元にある株式を引き出したいと思います。 ... 2つのステータス値すなわち「販売」と私は、データベースから結果を抽出するために、次のクエリを使用していますが、それは販売の違いや売れ残りの項目を計算しない「売れ残り」との基本的なレベルでSQL Server 2000のテーブルから現在の在庫を抽出する方法

select category, item_name, 
     sum(crtns_added) as Cartons, sum(pieces_added) as Pieces, 
     sum(total_price) 
from Stock 
where status = 'unsold' 
group by category, item_name 

私はまた、あなたが適切な値を持つアイテムを選択するために、二つのサブ選択を使用する必要があり、この

select category, item_name, (sum(crtns_added) - sum(crtns_removed)) as Cartons, 
     (sum(pieces_added)- sum(pieces_removed)) as Pieces, 
     sum(total_price) 
from Stock 
where status = 'unsold' or status = 'sold' 
group by category, item_name 

答えて

0

を試してみました - のようなもの:

SELECT 
    category, 
    item_name, 
    (SELECT SUM(crtns_added) FROM dbo.Stock s1 WHERE s1.ItemID = s.ItemID AND s1.Status = 'unsold') 'Unsold Cartons', 
    (SELECT SUM(crtns_added) FROM dbo.Stock s2 WHERE s2.ItemID = s.ItemID AND s2.Status = 'sold') 'Sold Cartons' 
FROM 
    dbo.Stock s 
GROUP BY 
    category, item_name 

をこのがあります仮定はあなたのアイテムを一意に識別する列 - 主キーのようなもの。この手法を使用すると、必要なものを販売したカートンまたは未販売カートンの合計を取得できます。

+0

どのように私は両方の違いを得ることができますか?私は現在売れていない商品を表示したいだけです...しかし、新しい在庫が追加されるか古い在庫が取り除かれるたびに、取引は在庫表に記録されます – user944591

関連する問題