iT邦幫忙

0

MS-SQL求助

各位前輩們好,小弟被一個問題難住了也爬了許多文但是還是毫無頭緒,只好厚著臉皮發問了。

我先陳述一下我的問題。

我現在在記錄庫存紀錄的方式是

物料 / 數量 / (進=0/出=1)
物料A / 5 / 0
物料A / 3 / 1
物料B / 6 / 0
物料C / 5 / 0
物料B / 1 / 1

大概紀錄的方式像LOG一樣

如果今天是單一物品呼叫出來小弟是會做的,但是我現在面臨的情境是我需要把物料變成如下呈現

物料 / 數量
物料A / 2
物料B / 5
物料C / 5

把所有紀錄做加總

請求各位前輩給我一個方向就好,不管是在資料庫或著是後端能達到目標的操作方向都好,不求答案。

感激不盡!

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
海綿寶寶
iT邦大神 1 級 ‧ 2017-09-07 11:49:57
最佳解答

方向是 GROUP BY, SUM, CASE
不求答案就不要往下看囉...

http://ithelp.ithome.com.tw/upload/images/20170907/20001787xEbhxHhSM7.png

CREATE TABLE table1
    ([material] varchar(1), [amount] int, [inout] int)
;
    
INSERT INTO table1
    ([material], [amount], [inout])
VALUES
    ('A', 5, 0),
    ('A', 3, 1),
    ('B', 6, 0),
    ('C', 5, 0),
    ('B', 1, 1)
;

SELECT material, 
SUM(CASE WHEN inout=0 THEN amount ELSE -1*amount END) AS amt
FROM table1 
GROUP BY material
baida0630 iT邦新手 4 級 ‧ 2017-09-07 11:52:30 檢舉

謝了 我會去查一下case在linq裡面怎麼用 感激不盡

froce iT邦大師 1 級 ‧ 2017-09-07 16:20:44 檢舉

要在後端處理的話就把所有的進/出加總,然後進減出就好。

我要發表回答

立即登入回答