iT邦幫忙

0

MS SQL詢問

圖片一
https://ithelp.ithome.com.tw/upload/images/20190813/20103088iFTzHr8srx.png

圖片二
https://ithelp.ithome.com.tw/upload/images/20190813/20103088UjPJD1uTEo.png

請問如何將
圖片一
下語法查詢成
圖片二內容

狀態欄的-1代表本期出庫,1代表本期入庫
目前庫存為
本期出庫-本期入庫

請各位指教
謝謝大家。

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

2 個回答

0
rogeryao
iT邦大師 1 級 ‧ 2019-08-14 10:08:49
最佳解答
SELECT 品號,品名,規格,單位,批號,有效日期,庫別,庫別名稱,
A.本期入庫,B.本期出庫,
(A.本期入庫-B.本期出庫) AS '目前庫存'
FROM (
SELECT 品號,品名,規格,單位,批號,有效日期,庫別,庫別名稱,
SUM(總數量) AS '本期入庫'
FROM ARBCR 
WHERE 1=1
AND 狀態 = 1
GROUP BY 品號,品名,規格,單位,批號,有效日期,庫別,庫別名稱
) AS A
INNER JOIN (
SELECT 品號,品名,規格,單位,批號,有效日期,庫別,庫別名稱,
SUM(總數量) AS '本期出庫'
FROM ARBCR 
WHERE 1=1
AND 狀態 = -1
GROUP BY 品號,品名,規格,單位,批號,有效日期,庫別,庫別名稱
) AS B ON
AND A.品號=B.品號
AND A.品名=B.品名
AND A.規格=B.規格
AND A.單位=B.單位
AND A.批號=B.批號
AND A.有效日期=B.有效日期
AND A.庫別=B.庫別 
AND A.庫別名稱=B.庫別名稱
WHERE 1=1
ORDER BY A.品號,A.品名,A.規格,A.單位,A.批號,A.有效日期,A.庫別,A.庫別名稱

未測試

z22344566 iT邦新手 4 級 ‧ 2019-08-23 13:14:45 檢舉

謝謝提醒
已成功

2
japhenchen
iT邦超人 1 級 ‧ 2019-08-13 10:26:39
SELECT 
    品號,品名,規格,單位,批號,有效期限,庫別,庫別名稱,
    sum(本期入庫) as f本期入庫,
    sum(本期出庫) as f本期出庫,
    sum(本期入庫) - sum(本期出庫) as 目前庫存
FROM 庫存表
GROUP BY 品號,品名,規格,單位,批號,有效期限,庫別,庫別名稱

BUT.........庫存進出記錄,應該跟庫存表是分開不同一個表吧?
這狀況會有點小複雜

SQL2008之後可以使用中文做欄位/TABLE/DATABASE名,所以我就懶到用中文直接表示了

小魚 iT邦大師 1 級 ‧ 2019-08-13 13:14:24 檢舉

沒有正規化吧,
一般應該是要正規化...

z22344566 iT邦新手 4 級 ‧ 2019-08-13 14:36:31 檢舉

主key值為
品號/品名/規格/單位/批號/有效日期/庫別/狀態

主KEY應該只要一個就好吧........我都用id (int auto increase),題外話了

庫存表,每個品項我只會存一筆記錄,庫存進出盤點調整則另存一個記錄表,FK庫存表的id即可,+進-出+盤盈-盤虧就得庫存數量

我要發表回答

立即登入回答