用一條SQL完成資料表的行統計

2021-03-31 08:56:30 字數 786 閱讀 1081

by ben

作者的乙個軟體專案的查詢系統需求:

有資料表:

名稱    數量   狀態

-----------------------

產品a    10     進貨

產品a    20     銷售

產品b    20     進貨

要查詢結果為:

產品名稱   庫存數量

-----------------------

產品a        -10 

產品b         20

解決方法一:

select

distinct 名稱,

(isnull((select sum(a.數量) from 庫存表 a where a.名稱 = 庫存表.名稱 and a.狀態='進貨'), 0)

-isnull((select sum(a.數量) from 庫存表 a where a.名稱 = 庫存表.名稱  and a.狀態='銷售'), 0)) as 庫存數量

from

庫存表解決方法二(access):

select 名稱,sum(iif(狀態='進貨',1,-1) * 數量) as  庫存數量 from 庫存表 group by 名稱

解決方法三(access):

select 名稱,sum(iif(狀態='進貨',數量,0)-iif(狀態='銷貨',數量,0)) as  庫存數量 from 庫存表 group by 名稱

用一條SQL完成資料表的行統計

by ben 作者的乙個軟體專案的查詢系統需求 有資料表 名稱 數量 狀態 產品a 10 進貨 產品a 20 銷售 產品b 20 進貨 要查詢結果為 產品名稱 庫存數量 產品a 10 產品b 20 解決方法一 select distinct 名稱,isnull select sum a.數量 fro...

用一條SQL完成資料表的行統計

by ben 作者的乙個軟體專案的查詢系統需求 有資料表 名稱 數量 狀態 產品a 10 進貨 產品a 20 銷售 產品b 20 進貨 要查詢結果為 產品名稱 庫存數量 產品a 10 產品b 20 解決方法一 select distinct 名稱,isnull select sum a.數量 fro...

用一條SQL完成資料表的行統計

by ben 作者的乙個軟體專案的查詢系統需求 有資料表 名稱 數量 狀態 產品a 10 進貨 產品a 20 銷售 產品b 20 進貨 要查詢結果為 產品名稱 庫存數量 產品a 10 產品b 20 解決方法一 select distinct 名稱,isnull select sum a.數量 fro...