台灣最大程式設計社群網站
線上人數
779
 
會員總數:245627
討論主題:189322
歡迎您免費加入會員
討論區列表 >> MS SQL >> 請各位大大幫忙看看~撈ERP產品資料的SQL有問題
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
請各位大大幫忙看看~撈ERP產品資料的SQL有問題
價值 : 100 QP  點閱數:214 回應數:10
樓主

三十六度
門外漢
0 1
16 2
發送站內信


我需要用語法把1年內在各平台賣不出去的產品列出報表

但這段語法一直過不了 ~~ 請高手幫忙看一下,感謝!!

Select

a.據點代號,
b.產品代號,
max(c.產品名稱) as 產品名稱,
sum(b.數量 * b.實際金額) as 產品銷售額,
sum(b.數量) as 產品銷售量

From

(銷售主檔 a Inner JoIn 銷售明細商品 b on a.銷售單號 =b.銷售單號) inner join 商品檔 c on b.產品代號= c.產品代號

Where

a.日期 >='2019/01/01' And a.日期<='2019/12/31'

group by a.據點代號,b.產品代號

order by 產品銷售量

搜尋相關Tags的文章: [ SQL ] , [ 語法問題 ] , [ 撈資料 ] ,
本篇文章發表於2020-03-26 09:58
1樓
回應

pilipala
檢舉此回應
有錯誤訊息可以參考嗎?

覺得銷售主檔和銷售明細商品 JOIN 時,應該不用有前後括號,亂猜的
本篇文章回覆於2020-03-26 10:28
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

pilipala
檢舉此回應
先釐清一下過不了是語法有錯誤訊息,還是產出的結果不如預期
本篇文章回覆於2020-03-26 10:35
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
order by 產品銷售量 改成 order by sum(b.數量 * b.實際金額)
本篇文章回覆於2020-03-26 13:36
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

P陳
檢舉此回應
賣不出去的產品怎會有銷售量可以 ORDER 呢?

因為賣不出去日期在 1/1 ~12/31 當然也撈不到資料了
本篇文章回覆於2020-03-26 20:46
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
與4F的想法一樣 日期應該要有兩種 一個是進貨日 一個是出貨日 這樣才有解
本篇文章回覆於2020-03-26 21:38
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

三十六度
檢舉此回應
感謝3F及4F大大

我錯了2個地方,第1個是oder by 改成 sum() 就可以跑了

第2個是賣不出去當然沒資料可撈,

所以我改成這樣

Select

a.產品代號,
max(a.產品名稱) as 產品名稱,
sum(b.數量* b.實際金額) as 產品銷售額,
sum(b.數量) as 產品銷售量,
max(c.據點代號) as 據點

From

(商品檔 a left JoIn 銷售明細商品 b on a.產品代號 =b.產品代號) left join 銷售主檔 c on b.銷售單號= c.銷售單號



group by a.產品代號

order by sum(b.數量) desc

只不過沒辦法限定 銷售主檔 的 日期區間為 1年,因為他放在 left join 後,怎麼下都錯 ><


本篇文章回覆於2020-03-27 11:41
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
回應

阿恢
捐贈 VP 給 阿恢 檢舉此回應
我測試是可以限制在一年內...


本篇文章回覆於2020-03-27 14:28
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
最有價值解答

P陳
檢舉此回應
您參考看看 用子查詢方式作的

Not IN 表示2019 沒有交易的
SELECT D01客戶主檔.客戶編號 FROM D01客戶主檔 GROUP BY D01客戶主檔.客戶編號
HAVING (((D01客戶主檔.客戶編號)
Not In (select 客戶編號 from B01憑單主檔 where 憑單主檔編號 like '2019*')));

IN 表示 2019 有交易的
SELECT D01客戶主檔.客戶編號 FROM D01客戶主檔 GROUP BY D01客戶主檔.客戶編號
HAVING (((D01客戶主檔.客戶編號)
In (select 客戶編號 from B01憑單主檔 where 憑單主檔編號 like '2019*')));
本篇文章回覆於2020-03-27 15:34
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
如果有進貨資訊 交貨資訊 兩個一減 就是答案了吧

with
進貨 as
(
select 品號,sum(數量) 進貨量 from 進貨單 where year(日期)='2019' group by 品號
),
銷貨 as
(
select 品號,sum(數量) 銷貨量 from 銷貨單 where year(日期)='2019' group by 品號
)

select t1.品號,(t1.進貨量-t2.銷貨單) from 進貨 t1 left join 銷貨單 t2 on t1.品號=t2.品號
本篇文章回覆於2020-03-27 16:36
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
作者回應

三十六度
檢舉此回應
7F大:
是可以跑,但是我RUN出來的資料會有少,沒賣出去的通通列不出來,只列出來賣出去的

P陳大:
感謝您,我用子查詢解決了。

真的有點難大:
要撈商品檔,因為有可能是很久以前進貨的,一直都沒賣出去,感謝您的協助
本篇文章回覆於2020-03-29 19:49
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.