2017-03-21 9 views
-1

ここにサンプルテーブルがありますが、「アイテム」に「アイテム」を差し引いていますが、この項目では、nullを "items in"の値にする必要があります。「NULL」に減算すると元の値を保持する方法

|ItemCode | Qty |isIN|isOUT| 
|---------|-----|----|-----| 
| 1  |2 | 1 | 0 | 
|---------|-----|----|-----| 
| 2  |5 | 1 | 0 | 
|---------|-----|----|-----| 
| 3  | 1 | 1 | 0 | 
|---------|-----|----|-----| 
| 4  | 2 | 1 | 0 | 
|---------|-----|----|-----| 
| 10  | 14 | 1 | 0 | 
|---------|-----|----|-----| 
| 10  | 1 | 0 | 1 | 
|---------|-----|----|-----| 
| 10  | 1 | 0 | 1 | 
|---------|-----|----|-----| 
| 12  | 1 |1 | 0 | 
|---------|-----|----|-----| 
| 12  | 1 | 0 | 1 | 
|---------|-----|----|-----| 
| 13  | 1 | 1 | 0 | 
|---------|-----|----|-----| 
| 14  | 2 | 1 | 0 | 
|---------|-----|----|-----| 
| 14  | 1 |0 |1 | 

私のクエリはこれです。

SELECT i.ItemCode, Sum(i.Qty)-(select Sum(Qty) from INVENTORY where isOUT = 1 and i.ItemCode = ItemCode)as Qty 
FROM INVENTORY i 
WHERE isIN = 1 
GROUP BY i.ItemCode 

結果はこれです:

|ItemCode | Qty | 
|---------|-----| 
| 1  |NULL | 
|---------|-----| 
| 2  |NULL | 
|---------|-----| 
| 3  |NULL | 
|---------|-----| 
| 4  |NULL | 
|---------|-----| 
| 10  | 12 | 
|---------|-----| 
| 12  | 0 | 
|---------|-----| 
| 13  | NULL| 
|---------|-----| 
| 14  | 1 | 
|---------|-----| 
+1

あなたはどのデータベースを使用していますか?適切なタグを付けてください。あなたはどんな結果を望んでいますか? –

+0

あなたのデータベースにnullがありますか?そのような場合は、クエリにデフォルト値を追加する必要があります(0など)。そうでない場合は、おそらくあなたのクエリに何か間違っている –

+0

こんにちはゴードンは、SQLサーバー2008 – Trehv

答えて

1

私はここでサンプルテーブルを持っていると私は私があなたを考える

「の項目は、」ちょうどたい に条件付きの集約「の項目を」引くたい:

select i.ItemCode, 
     sum(case when i.isIN = 1 then i.Qty 
       when i.isOut = 1 then - i.Qty 
      end) 
from inventory i 
group by i.ItemCode; 

ませんサブクエリは全く必要とされています。

+0

はい、これです。できます。ゴードンに感謝します。どのように減算するかを考えている間にのみ可能なのですが。どうもありがとう。 – Trehv

1
SELECT i.ItemCode, Sum(ISNULL(i.Qty,0))-(select Sum(ISNULL(Qty,0)) from INVENTORY where isOUT = 1 and i.ItemCode = ItemCode)as Qty 
FROM INVENTORY i 
WHERE isIN = 1 
GROUP BY i.ItemCode 

使用

ISNULL(カラム、値)

そう値がnullの場合、それは扱いそれは0(またはあなたが好きな値E)

関連する問題