回答編集履歴

4 修正

sazi

sazi score 17527

2017/09/01 20:25  投稿

ちょっとSQLが冗長なので、以下を提示のSQLとします。
```SQL
SELECT
   CASE ~
   ,sum.`1月` ~
FROM (
   SELECT
        `orderer_id`
       ,`point_of_sale_id`
       ,SUM ~各月
   FROM ~
   WHERE ~
   GROUP BY
        orderer_id
       ,point_of_sale_id
   WITH ROLLUP
) AS sum;
```
上記とほぼ同じ構造の以下のSQLとUNIONすれば取り敢えずはできそうですけど、冗長すぎるのでスルーして下さい。
```SQL
SELECT
   CASE 
       WHEN (`orderer_id`= 2) THEN 'F 社 - 店舗・店舗免税'
       WHEN (`orderer_id`= 3) THEN 'F 社 - 店舗・店舗免税'
       WHEN (`orderer_id`= 4) THEN 'F 社 - 店舗・店舗免税'
       WHEN (`orderer_id`= 3) THEN 'R 社 - 店舗・店舗免税'
       WHEN (`orderer_id`= 4) THEN 'C 社 - 店舗・店舗免税'
   END AS '発注元の会社 - 販売した場所'
   ,sum.`1月` ~
FROM (
   SELECT
        `orderer_id`
       ,Null as `point_of_sale_id`
       ,SUM ~各月
   FROM ~
   WHERE ~
     and `point_of_sale_id` in (2,3)
   GROUP BY
        orderer_id
   WITH ROLLUP
) AS sum;
```
3 修正

sazi

sazi score 17527

2017/09/01 20:24  投稿

訂正中・・・・・・・・・・・
ちょっとSQLが冗長なので、以下を提示のSQLとします。
```SQL
SELECT
   CASE ~
   ,sum.`1月` ~
FROM (
   SELECT
        `orderer_id`
       ,`point_of_sale_id`
       ,SUM ~各月
   FROM ~
   WHERE ~
   GROUP BY
        orderer_id
       ,point_of_sale_id
   WITH ROLLUP
) AS sum;
```
上記とほぼ同じ構造の以下のSQLとUNIONすれば取り敢えずはできそうですけど、冗長すぎるのでスルーして下さい。
```SQL
SELECT
   CASE 
       WHEN (`orderer_id`= 2) THEN 'F 社 - 店舗・店舗免税'
       WHEN (`orderer_id`= 3) THEN 'F 社 - 店舗・店舗免税'
       WHEN (`orderer_id`= 4) THEN 'F 社 - 店舗・店舗免税'
   END AS '発注元の会社 - 販売した場所'
   ,sum.`1月` ~
FROM (
   SELECT
        `orderer_id`
       ,Null as `point_of_sale_id`
       ,SUM ~各月
   FROM ~
   WHERE ~
     and `point_of_sale_id` in (2,3)
   GROUP BY
        orderer_id
   WITH ROLLUP
) AS sum;
```
2 修正

sazi

sazi score 17527

2017/09/01 20:24  投稿

訂正中・・・・・・・・・・・
ちょっとSQLが冗長なので、以下を提示のSQLとします。
```SQL
SELECT
   CASE ~
   ,sum.`1月` ~
FROM (
   SELECT
        `orderer_id`
       ,`point_of_sale_id`
       ,SUM ~各月
   FROM ~
   WHERE ~
   GROUP BY
        orderer_id
       ,point_of_sale_id
   WITH ROLLUP
) AS sum;
```
上記とほぼ同じ構造の以下のSQLとUNIONすれば取り敢えずはできそうですけど、冗長すぎるのでスルーして下さい。
```SQL
SELECT
   CASE 
       WHEN (`orderer_id`= 2) THEN 'F 社 - 店舗・店舗免税'
       WHEN (`orderer_id`= 3) THEN 'F 社 - 店舗・店舗免税'
       WHEN (`orderer_id`= 4) THEN 'F 社 - 店舗・店舗免税'
   END AS '発注元の会社 - 販売した場所'
   ,sum.`1月` ~
FROM (
   SELECT
        `orderer_id`
       ,Null as `point_of_sale_id`
       ,SUM ~各月
   FROM ~
   WHERE ~
     and `point_of_sale_id` in (2,3)
   GROUP BY
        orderer_id
   WITH ROLLUP
) AS sum;
```
1 訂正

sazi

sazi score 17527

2017/09/01 20:06  投稿

case に新たに追加すればよろしいのでは?
※F社の場合
```SQL
       WHEN (`orderer_id`= 2 AND `point_of_sale_id`in(2,3)) THEN 'F 社 - 店舗・店舗免税'
```
訂正中・・・・・・・・・・・

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る