###前提・実現したいこと
その年の売上を月毎に算出してます。
また、会社、販売場所をグループ化しています。
店舗と店舗免税を区別せずに店舗として、合計値を算出したいです。
ご教授の程、宜しくお願い申し上げます。
###該当のソースコード
SQL
1SELECT 2 CASE 3 WHEN (`orderer_id`= 2 AND `point_of_sale_id`=2) THEN 'F 社 - 店舗' 4 WHEN (`orderer_id`= 2 AND `point_of_sale_id`=3) THEN 'F 社 - 店舗免税' 5 WHEN (`orderer_id`= 2 AND `point_of_sale_id`=4) THEN 'F 社 - 国内通販' 6 WHEN (`orderer_id`= 2 AND `point_of_sale_id`=5) THEN 'F 社 - 海外通販' 7 WHEN (`orderer_id`= 2) THEN 'F 社 - 合計' 8 WHEN (`orderer_id`= 3 AND `point_of_sale_id`=2) THEN 'R 社 - 店舗' 9 WHEN (`orderer_id`= 3 AND `point_of_sale_id`=3) THEN 'R 社 - 店舗免税' 10 WHEN (`orderer_id`= 3 AND `point_of_sale_id`=4) THEN 'R 社 - 国内通販' 11 WHEN (`orderer_id`= 3 AND `point_of_sale_id`=5) THEN 'R 社 - 海外通販' 12 WHEN (`orderer_id`= 3) THEN 'R 社 - 合計' 13 WHEN (`orderer_id`= 4 AND `point_of_sale_id`=2) THEN 'C 社 - 店舗' 14 WHEN (`orderer_id`= 4 AND `point_of_sale_id`=3) THEN 'C 社 - 店舗免税' 15 WHEN (`orderer_id`= 4 AND `point_of_sale_id`=4) THEN 'C 社 - 国内通販' 16 WHEN (`orderer_id`= 4 AND `point_of_sale_id`=5) THEN 'C 社 - 海外通販' 17 WHEN (`orderer_id`= 4) THEN 'C 社 - 合計' 18 END AS '発注元の会社 - 販売した場所' 19 ,sum.`1月` 20 ,sum.`2月` 21 ,sum.`3月` 22 ,sum.`4月` 23 ,sum.`5月` 24 ,sum.`6月` 25 ,sum.`7月` 26 ,sum.`8月` 27 ,sum.`9月` 28 ,sum.`10月` 29 ,sum.`11月` 30 ,sum.`12月` 31FROM ( 32 SELECT 33 `orderer_id` 34 ,`point_of_sale_id` 35 ,SUM( 36 IF( 37 EXTRACT(MONTH from `payment_confirm`) = '01' 38 , CASE 39 WHEN (`orderer_id`= 2 OR `orderer_id`= 3 OR `orderer_id`= 4) AND (`point_of_sale_id`=2 OR `point_of_sale_id`=4) THEN `usually_grand_total` + `grand_consumption_tax_total` 40 WHEN (`orderer_id`= 2 OR `orderer_id`= 3 OR `orderer_id`= 4) AND (`point_of_sale_id`=3 OR `point_of_sale_id`=5) THEN `custom_grand_total` 41 END 42 , 0) 43 ) AS '1月' 44 ,SUM( 45 IF( 46 EXTRACT(MONTH from `payment_confirm`) = '02' 47 , CASE 48 WHEN (`orderer_id`= 2 OR `orderer_id`= 3 OR `orderer_id`= 4) AND (`point_of_sale_id`=2 OR `point_of_sale_id`=4) THEN `usually_grand_total` + `grand_consumption_tax_total` 49 WHEN (`orderer_id`= 2 OR `orderer_id`= 3 OR `orderer_id`= 4) AND (`point_of_sale_id`=3 OR `point_of_sale_id`=5) THEN `custom_grand_total` 50 END 51 , 0) 52 ) AS '2月' 53 ,SUM( 54 IF( 55 EXTRACT(MONTH from `payment_confirm`) = '03' 56 , CASE 57 WHEN (`orderer_id`= 2 OR `orderer_id`= 3 OR `orderer_id`= 4) AND (`point_of_sale_id`=2 OR `point_of_sale_id`=4) THEN `usually_grand_total` + `grand_consumption_tax_total` 58 WHEN (`orderer_id`= 2 OR `orderer_id`= 3 OR `orderer_id`= 4) AND (`point_of_sale_id`=3 OR `point_of_sale_id`=5) THEN `custom_grand_total` 59 END 60 , 0) 61 ) AS '3月' 62 ,SUM( 63 IF( 64 EXTRACT(MONTH from `payment_confirm`) = '04' 65 , CASE 66 WHEN (`orderer_id`= 2 OR `orderer_id`= 3 OR `orderer_id`= 4) AND (`point_of_sale_id`=2 OR `point_of_sale_id`=4) THEN `usually_grand_total` + `grand_consumption_tax_total` 67 WHEN (`orderer_id`= 2 OR `orderer_id`= 3 OR `orderer_id`= 4) AND (`point_of_sale_id`=3 OR `point_of_sale_id`=5) THEN `custom_grand_total` 68 END 69 , 0) 70 ) AS '4月' 71 ,SUM( 72 IF( 73 EXTRACT(MONTH from `payment_confirm`) = '05' 74 , CASE 75 WHEN (`orderer_id`= 2 OR `orderer_id`= 3 OR `orderer_id`= 4) AND (`point_of_sale_id`=2 OR `point_of_sale_id`=4) THEN `usually_grand_total` + `grand_consumption_tax_total` 76 WHEN (`orderer_id`= 2 OR `orderer_id`= 3 OR `orderer_id`= 4) AND (`point_of_sale_id`=3 OR `point_of_sale_id`=5) THEN `custom_grand_total` 77 END 78 , 0) 79 ) AS '5月' 80 ,SUM( 81 IF( 82 EXTRACT(MONTH from `payment_confirm`) = '06' 83 , CASE 84 WHEN (`orderer_id`= 2 OR `orderer_id`= 3 OR `orderer_id`= 4) AND (`point_of_sale_id`=2 OR `point_of_sale_id`=4) THEN `usually_grand_total` + `grand_consumption_tax_total` 85 WHEN (`orderer_id`= 2 OR `orderer_id`= 3 OR `orderer_id`= 4) AND (`point_of_sale_id`=3 OR `point_of_sale_id`=5) THEN `custom_grand_total` 86 END 87 , 0) 88 ) AS '6月' 89 ,SUM( 90 IF( 91 EXTRACT(MONTH from `payment_confirm`) = '07' 92 , CASE 93 WHEN (`orderer_id`= 2 OR `orderer_id`= 3 OR `orderer_id`= 4) AND (`point_of_sale_id`=2 OR `point_of_sale_id`=4) THEN `usually_grand_total` + `grand_consumption_tax_total` 94 WHEN (`orderer_id`= 2 OR `orderer_id`= 3 OR `orderer_id`= 4) AND (`point_of_sale_id`=3 OR `point_of_sale_id`=5) THEN `custom_grand_total` 95 END 96 , 0) 97 ) AS '7月' 98 ,SUM( 99 IF( 100 EXTRACT(MONTH from `payment_confirm`) = '08' 101 , CASE 102 WHEN (`orderer_id`= 2 OR `orderer_id`= 3 OR `orderer_id`= 4) AND (`point_of_sale_id`=2 OR `point_of_sale_id`=4) THEN `usually_grand_total` + `grand_consumption_tax_total` 103 WHEN (`orderer_id`= 2 OR `orderer_id`= 3 OR `orderer_id`= 4) AND (`point_of_sale_id`=3 OR `point_of_sale_id`=5) THEN `custom_grand_total` 104 END 105 , 0) 106 ) AS '8月' 107 ,SUM( 108 IF( 109 EXTRACT(MONTH from `payment_confirm`) = '09' 110 , CASE 111 WHEN (`orderer_id`= 2 OR `orderer_id`= 3 OR `orderer_id`= 4) AND (`point_of_sale_id`=2 OR `point_of_sale_id`=4) THEN `usually_grand_total` + `grand_consumption_tax_total` 112 WHEN (`orderer_id`= 2 OR `orderer_id`= 3 OR `orderer_id`= 4) AND (`point_of_sale_id`=3 OR `point_of_sale_id`=5) THEN `custom_grand_total` 113 END 114 , 0) 115 ) AS '9月' 116 ,SUM( 117 IF( 118 EXTRACT(MONTH from `payment_confirm`) = '10' 119 , CASE 120 WHEN (`orderer_id`= 2 OR `orderer_id`= 3 OR `orderer_id`= 4) AND (`point_of_sale_id`=2 OR `point_of_sale_id`=4) THEN `usually_grand_total` + `grand_consumption_tax_total` 121 WHEN (`orderer_id`= 2 OR `orderer_id`= 3 OR `orderer_id`= 4) AND (`point_of_sale_id`=3 OR `point_of_sale_id`=5) THEN `custom_grand_total` 122 END 123 , 0) 124 ) AS '10月' 125 ,SUM( 126 IF( 127 EXTRACT(MONTH from `payment_confirm`) = '11' 128 , CASE 129 WHEN (`orderer_id`= 2 OR `orderer_id`= 3 OR `orderer_id`= 4) AND (`point_of_sale_id`=2 OR `point_of_sale_id`=4) THEN `usually_grand_total` + `grand_consumption_tax_total` 130 WHEN (`orderer_id`= 2 OR `orderer_id`= 3 OR `orderer_id`= 4) AND (`point_of_sale_id`=3 OR `point_of_sale_id`=5) THEN `custom_grand_total` 131 END 132 , 0) 133 ) AS '11月' 134 ,SUM( 135 IF( 136 EXTRACT(MONTH from `payment_confirm`) = '12' 137 , CASE 138 WHEN (`orderer_id`= 2 OR `orderer_id`= 3 OR `orderer_id`= 4) AND (`point_of_sale_id`=2 OR `point_of_sale_id`=4) THEN `usually_grand_total` + `grand_consumption_tax_total` 139 WHEN (`orderer_id`= 2 OR `orderer_id`= 3 OR `orderer_id`= 4) AND (`point_of_sale_id`=3 OR `point_of_sale_id`=5) THEN `custom_grand_total` 140 END 141 , 0) 142 ) AS '12月' 143 FROM 144 vw_sales_budget 145 WHERE 146 EXTRACT(YEAR from `payment_confirm`) = '2017' 147 AND 148 `orderer_id` NOT IN(1) 149 AND 150 `point_of_sale_id` NOT IN(1) 151 GROUP BY 152 orderer_id 153 ,point_of_sale_id 154 WITH ROLLUP 155) AS sum;
ビュー
SQL
1CREATE 2 ALGORITHM = UNDEFINED 3 DEFINER = `hironobu`@`localhost` 4 SQL SECURITY DEFINER 5VIEW `vw_sales_budget` AS 6 SELECT 7 `ps`.`process_status_id` AS `process_status_id`, 8 `so`.`orderer_id` AS `orderer_id`, 9 `pos`.`point_of_sale_id` AS `point_of_sale_id`, 10 `so`.`usually_grand_total` AS `usually_grand_total`, 11 `so`.`custom_grand_total` AS `custom_grand_total`, 12 `so`.`grand_consumption_tax_total` AS `grand_consumption_tax_total`, 13 `so`.`payment_confirm` AS `payment_confirm` 14 FROM 15 (((`sales_order` `so` 16 JOIN `processes_status` `ps` ON ((`so`.`processing_status_id` = `ps`.`process_status_id`))) 17 JOIN `companys` `cp` ON ((`so`.`orderer_id` = `cp`.`company_id`))) 18 JOIN `point_of_sales` `pos` ON ((`so`.`point_of_sale_id` = `pos`.`point_of_sale_id`))) 19 WHERE 20 (`so`.`processing_status_id` <> 8)
###補足情報(言語/FW/ツール等のバージョンなど)
MySQL 5.7
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/09/01 10:39
2017/09/01 10:49 編集
2017/09/01 10:57
2017/09/01 11:07
2017/09/01 11:08
2017/09/01 11:18
2017/09/01 11:28
2017/09/01 12:11
2017/09/04 10:13
2017/09/04 10:17
2017/09/04 10:21
2017/09/04 11:25
2017/09/05 00:54