請教邦友
我將數個table 下查詢命令後得出的查詢值如下
Select Stable.Name as shop
COUNT(case when (Wtable.Status <>'DEL')then 1 else null end) as 總數量,
COUNT(case when (Wtable.Status = 'ED')then 1 else null end) as 待處理中,
COUNT(case when (Wtable.Status = 'OK')then 1 else null end) as 已處理,
COUNT(case when (Wtable.Status = 'OK' and Wtable.Rem = '結案')then 1 else null end) as 已結案
--這邊是查詢命令
--將Wtable的Status各種狀態作各店的統計次數
--DEL=刪單,ED=編輯中,OK=完成, 完成後結案在Rem標註'結案'
FROM Stable INNER JOIN
Wtable ON Stable.ShopNO = Wtable.ShopNo INNER JOIN
--這邊是將 Stable 跟 Wtable作關聯,為了把中文店名show出來
where Wtable.BDate between '2017/01/01' and '2017/05/30'
GROUP BY Stable.NAME,Wtable.ShopNo
shop | 總數量 | 待處理中 | 已處理 | 已結案 |
--------+------+------+------+------
台北店 | 50 | 5 | 45 | 40 |
台中店 | 60 | 10 | 50 | 25 |
高雄店 | 20 | 2 | 18 | 18 |
那我想將結果加工成如下:
那我的SQL命令要怎麼改呢?
shop | 總數量 | 待處理中 | 已處理 | 已結案 | 結案率 | 未處理率 |
--------+-----+-----+-----+-----+-------+-------+--
台北店 | 50 | 5 | 45 | 40 | 89% | 10% |
台中店 | 60 | 10 | 50 | 25 | 50% | 17% |
高雄店 | 20 | 2 | 18 | 18 | 100% | 10% |
total | 130 | 17 | 113 | 83 | 74% | 14% |
右方新增兩欄, 是否有比以下這種打法還要簡略的方式
因為這樣SQL文字有點太長XD...
SQL是否有取值出來作再運算的方式COUNT(case when (Wtable.Status = 'OK')then 1 else null end) / COUNT(case when (Wtable.Status = 'GG')then 1 else null end)
目前還再找顯示成百分比的方式
在最下列顯示出總計total
再請邦友提供指教,謝謝
SELECT shop,A,B,C,D,(D/C*100) as dc,b/a*100 as ba
FROM (
Select Stable.Name as shop
COUNT(case when (Wtable.Status <>'DEL')then 1 else null end) as A,
COUNT(case when (Wtable.Status = 'ED')then 1 else null end) as B,
COUNT(case when (Wtable.Status = 'OK')then 1 else null end) as C,
COUNT(case when (Wtable.Status = 'OK' and Wtable.Rem = '結案')then 1 else null end) as D
--這邊是查詢命令
--將Wtable的Status各種狀態作各店的統計次數
--DEL=刪單,ED=編輯中,OK=完成, 完成後結案在Rem標註'結案'
FROM Stable INNER JOIN
Wtable ON Stable.ShopNO = Wtable.ShopNo INNER JOIN
--這邊是將 Stable 跟 Wtable作關聯,為了把中文店名show出來
where Wtable.BDate between '2017/01/01' and '2017/05/30'
GROUP BY Stable.NAME,Wtable.ShopNo
)
最後的加總:建議用excel 做會比較快.