|
|
@@ -195,10 +195,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|
|
'[',
|
|
|
GROUP_CONCAT(
|
|
|
JSON_OBJECT(
|
|
|
- 'option_id', o.id,
|
|
|
- 'option_text', o.option_text,
|
|
|
- 'sort_order', o.sort_order,
|
|
|
- 'is_answered', FIND_IN_SET(o.sort_order, REPLACE(a.option_id, '/', ',')) > 0
|
|
|
+ 'optionId', o.id,
|
|
|
+ 'optionText', o.option_text,
|
|
|
+ 'sortOrder', o.sort_order,
|
|
|
+ 'isAnswered', FIND_IN_SET(o.sort_order, REPLACE(a.option_id, '/', ',')) > 0
|
|
|
)
|
|
|
ORDER BY o.sort_order ASC
|
|
|
SEPARATOR ','
|
|
|
@@ -249,133 +249,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|
|
q.sort_order ASC -- 質問のソート順に並び替え
|
|
|
</select>
|
|
|
|
|
|
- <select id="selectYmdfCustomerCsvList" parameterType="YmdfSurvey" resultMap="YmdfSurveyResult">
|
|
|
- SELECT
|
|
|
- DISTINCT c.customer_id,
|
|
|
- c.customer_name,
|
|
|
- c.customer_name_kana,
|
|
|
- c.postal_code,
|
|
|
- c.prefecture AS prefecture,
|
|
|
- c.city_town AS city_town,
|
|
|
- c.address1 AS address1,
|
|
|
- c.mobile_phone,
|
|
|
- c.email,
|
|
|
- -- FCブランド情報(コード→名称)
|
|
|
- s.brand_code AS fc_brand_code,
|
|
|
- fc_dict.dict_label AS fc_brand_name, -- FCブランド名称(辞書テーブルより)
|
|
|
- -- 業種情報(コード→名称)
|
|
|
- s.business_type_code AS business_type_code,
|
|
|
- bt_dict.dict_label AS business_type_name, -- 業種名称(辞書テーブルより)
|
|
|
- -- 地域情報(親地域含む)
|
|
|
- s.region_code AS region_code,
|
|
|
- region.region_name AS region_name, -- 地域名称
|
|
|
- parent_region.region_name AS parent_region_name, -- 親地域名称(例:「関東」に「東京」が含まれる)
|
|
|
- s.store_name AS store_name
|
|
|
- FROM
|
|
|
- ymdf_customer c
|
|
|
- LEFT JOIN ymdf_customer_store cs
|
|
|
- ON c.customer_id = cs.customer_id
|
|
|
- AND cs.del_flag = 0
|
|
|
- LEFT JOIN ymdf_fc_store s
|
|
|
- ON cs.fc_store_id = s.fc_store_id
|
|
|
- AND s.del_flag = 0
|
|
|
- LEFT JOIN sys_dict_data fc_dict
|
|
|
- ON s.brand_code = fc_dict.dict_value
|
|
|
- AND fc_dict.dict_type = 'yamada_fc_brand'
|
|
|
- LEFT JOIN sys_dict_data bt_dict
|
|
|
- ON s.business_type_code = bt_dict.dict_value
|
|
|
- AND bt_dict.dict_type = 'yamada_business_type'
|
|
|
- LEFT JOIN ymdf_basic_region region
|
|
|
- ON s.region_code = region.region_code
|
|
|
- LEFT JOIN ymdf_basic_region parent_region
|
|
|
- ON region.parent_id = parent_region.region_id
|
|
|
- WHERE
|
|
|
- -- 複数選択条件(ブランド、業種、地域は複数の値ををサポート)
|
|
|
- s.brand_code IN ('010', '020') -- 複数選択ブランドコード
|
|
|
- AND s.business_type_code IN ('010', '020') -- 複数選択業種コード
|
|
|
- AND s.region_code IN ('KYUSHU_KAGOSHIMA', 'KINKI_KEIHAN', 'SHIKOKU') -- 複数選択地域コード
|
|
|
- -- 店舗名のあいまい検索(例:「東京」を含む店舗)
|
|
|
- AND s.store_name LIKE '%L%' -- 店舗名に「東京」を含む
|
|
|
- -- 基本フィルタ
|
|
|
- AND c.del_flag = 0 -- 削除済み顧客を除外
|
|
|
- </select>
|
|
|
-
|
|
|
- <select id="selectYmdfCustomerDmList" parameterType="YmdfSurvey" resultMap="YmdfSurveyResult">
|
|
|
- SELECT
|
|
|
- DISTINCT
|
|
|
- c.customer_id,
|
|
|
- c.customer_name,
|
|
|
- c.customer_name_kana,
|
|
|
- c.postal_code,
|
|
|
- c.prefecture AS prefecture,
|
|
|
- c.city_town AS city_town,
|
|
|
- c.address1 AS address1,
|
|
|
- c.mobile_phone,
|
|
|
- c.email,
|
|
|
- -- DM配信許可状況
|
|
|
- c.dm_allowed_flag,
|
|
|
- c.email_allowed_flag,
|
|
|
- -- 購入実績情報
|
|
|
- c.last_purchase_month AS last_purchase_month,
|
|
|
- c.total_valid_spending AS total_valid_spending,
|
|
|
- -- 店舗・地域関連情報
|
|
|
- s.store_name AS store_name,
|
|
|
- fc_dict.dict_label AS fc_brand_name,
|
|
|
- bt_dict.dict_label AS business_type_name,
|
|
|
- region.region_name AS region_name
|
|
|
- FROM
|
|
|
- ymdf_customer c
|
|
|
- LEFT JOIN ymdf_customer_store cs
|
|
|
- ON c.customer_id = cs.customer_id
|
|
|
- AND cs.del_flag = 0
|
|
|
- LEFT JOIN ymdf_fc_store s
|
|
|
- ON cs.fc_store_id = s.fc_store_id
|
|
|
- AND s.del_flag = 0
|
|
|
- LEFT JOIN sys_dict_data fc_dict
|
|
|
- ON s.brand_code = fc_dict.dict_value
|
|
|
- AND fc_dict.dict_type = 'yamada_fc_brand'
|
|
|
- LEFT JOIN sys_dict_data bt_dict
|
|
|
- ON s.business_type_code = bt_dict.dict_value
|
|
|
- AND bt_dict.dict_type = 'yamada_business_type'
|
|
|
- LEFT JOIN ymdf_basic_region region
|
|
|
- ON s.region_code = region.region_code
|
|
|
- LEFT JOIN ymdf_basic_region parent_region
|
|
|
- ON region.parent_id = parent_region.region_id
|
|
|
- WHERE
|
|
|
- -- 基本条件:顧客が削除されていない
|
|
|
- c.del_flag = 0
|
|
|
- -- DM配信許可
|
|
|
- AND c.dm_allowed_flag = 1
|
|
|
- -- 動的に6ヶ月前の年月を計算(例:2024年7月の場合、202401~202407を対象)
|
|
|
- AND c.last_purchase_month >=
|
|
|
- CAST(DATE_FORMAT(DATE_SUB(CURRENT_DATE(), INTERVAL 6 MONTH), '%Y%m') AS UNSIGNED)
|
|
|
- AND c.total_valid_spending >= 500
|
|
|
- -- ブランド複数選択
|
|
|
- AND s.brand_code IN ('010', '020')
|
|
|
- -- 業種複数選択
|
|
|
- AND s.business_type_code IN ('010', '020')
|
|
|
- -- 地域複数選択
|
|
|
- AND s.region_code IN ('KYUSHU_KAGOSHIMA', 'KINKI_KEIHAN', 'SHIKOKU')
|
|
|
- -- 店舗名あいまい検索
|
|
|
- AND s.store_name LIKE '%L%' -- 店舗名に「東京」を含む
|
|
|
- ORDER BY
|
|
|
- c.total_valid_spending DESC,
|
|
|
- c.last_purchase_month DESC
|
|
|
- </select>
|
|
|
-
|
|
|
<select id="selectMonthlyFcSalesByCurrentRegion" parameterType="YmdfSurvey" resultMap="YmdfSurveyResult">
|
|
|
-- 月度FC別売上集計(上位エリアでグループ化、売上シェア計算を修正)
|
|
|
WITH
|
|
|
@@ -975,40 +848,6 @@ store_sales AS (
|
|
|
</if>
|
|
|
</where>
|
|
|
</select>
|
|
|
- <select id="selectRegionTree" resultType="map">
|
|
|
- SELECT
|
|
|
- JSON_OBJECT(
|
|
|
- 'regions', JSON_ARRAYAGG(
|
|
|
- JSON_OBJECT(
|
|
|
- 'region_id', parent.region_id,
|
|
|
- 'region_name', parent.region_name,
|
|
|
- 'level', parent.level,
|
|
|
- 'sort_order', parent.sort_order,
|
|
|
- 'children', (
|
|
|
- SELECT JSON_ARRAYAGG(
|
|
|
- JSON_OBJECT(
|
|
|
- 'region_id', child.region_id,
|
|
|
- 'region_name', child.region_name,
|
|
|
- 'region_code', child.region_code,
|
|
|
- 'level', child.level,
|
|
|
- 'sort_order', child.sort_order,
|
|
|
- 'parent_region', parent.region_name
|
|
|
- )
|
|
|
- )
|
|
|
- FROM ymdf_basic_region child
|
|
|
- WHERE child.parent_id = parent.region_id
|
|
|
- ORDER BY child.sort_order
|
|
|
- )
|
|
|
- )
|
|
|
- )
|
|
|
- ) AS regions_tree
|
|
|
- FROM
|
|
|
- ymdf_basic_region parent
|
|
|
- WHERE
|
|
|
- parent.level = 1
|
|
|
- ORDER BY
|
|
|
- parent.sort_order
|
|
|
- </select>
|
|
|
|
|
|
<select id="selectYmdfSurveyById" parameterType="String" resultMap="YmdfSurveyResult">
|
|
|
<include refid="selectYmdfSurveyVo"/>
|