台灣最大程式設計社群網站
線上人數
859
 
會員總數:242642
討論主題:187615
歡迎您免費加入會員
討論區列表 >> MySQL >> case後的欄位自動變0
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
case後的欄位自動變0
價值 : 100 QP  點閱數:200 回應數:1

樓主

firerooney
門外漢
0 1
10 0
發送站內信

小弟是SQL新手,目前預到個問題想請教各位大大
先提供語法如下
select op.部門 , om.銷售單位,
count(distinct op.訂單) as 訂單數 , sum(op.費用::numeric) as 總金額
from
(select 訂單,
CASE
when sale_門市 = 'akm' then 'A門市'
when sale_門市 = 'acm' then 'B門市'
when sale_門市 = 'ajm' then 'C門市'
when sale_門市 = 'alm' then 'D門市'
else 'null'
end as 銷售單位
from TABLE_B) om,
(select 訂購日期,訂單,費用,部門 , 狀態 from TALBE_A where 部門 in
('A部門', 'B部門', 'C部門')
and {{金流狀態}}) op
where om.訂單 = op.訂單
and op.訂購日期 between '20171101' and '20171130'
and op.狀態 not in ('取消')
and om.銷售單位 not in ('null')
group by op.部門 , 銷售單位

在這段code中,如果B部門的D門市沒有任何訂單,照理說應該顯示0
但是資料庫跑出來的結果是不顯示任何東西
顯示結果如下:
部門 銷售單位 訂單數
A部門 A門市 25
A部門 B門市 4
A部門 C門市 59
A部門 D門市 11
B部門 A門市 17
B部門 B門市 6
B部門 C門市 24

如果我要讓沒有任何訂單的門市顯示0的話,這段code該怎麼改呢?

範例如下:
部門 銷售單位 訂單數
A部門 A門市 25
A部門 B門市 4
A部門 C門市 59
A部門 D門市 11
B部門 A門市 17
B部門 B門市 6
B部門 C門市 24
B部門 D門市 0

還請各位大神們幫忙解答,謝謝。





搜尋相關Tags的文章: [ case後欄位值 ] ,
本篇文章發表於2018-02-27 16:41
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
最有價值解答

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
除非你有一個全部門市的主表對應。要不然sql的資料輸出都是依有資料為主的

一般的做法如下
1.有一個全部部門的主表。用其做為主表並left join你上面找出來的東西。

2.用你的後端程式語言,事先將必要的全部部門先預設為0。再將其找到的資料帶入。
本篇文章回覆於2018-03-02 10:20
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

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