langjiu-project/FineReport/财务主题/报表/费用/1-财务销售费用汇总表.sql

399 lines
20 KiB
MySQL
Raw Normal View History

2024-10-17 11:20:53 +08:00
WITH corp AS (
SELECT
corp_code -- 公司编码
,corp_name -- 公司名称
2024-11-20 19:08:29 +08:00
FROM dwr.dim_corp a
2024-10-17 11:20:53 +08:00
WHERE corp_type = '实体'
AND (parent_corp_code LIKE '02%' OR corp_code = '0301')
2024-11-20 19:08:29 +08:00
AND exists (
select
1
from
dm.dm_bi_user_permisson
where
bi_user = '${fine_username}'
and per_model IN ('all','sal')
and (
is_all = 1
OR per_code = a.corp_code
)
)
${IF(LEN(sCorp)!=0," AND corp_code IN ('"+ sCorp +"')", "")}
2024-10-17 11:20:53 +08:00
),
base_info_curr AS (
SELECT
A.subject_code AS subject_code -- 科目编码
,SUM(A.debit_amt) AS debit_amt_y -- 借方金额_当年累计
,SUM(IF(A.acnt_mon = '${FORMAT(sStart_mon,"MM")}',A.debit_amt,0)) AS debit_amt_m -- 借方金额_当月累计
2024-10-17 11:20:53 +08:00
FROM dwr.fact_fim_subject_balance A-- 科目余额
JOIN corp B ON A.corp_code = B.corp_code
WHERE A.subject_code like '6601%'
AND A.acnt_year = '${YEAR(sStart_mon)}'
AND A.acnt_mon <= '${FORMAT(sStart_mon,"MM")}'
2024-10-17 11:20:53 +08:00
GROUP BY A.subject_code
),
base_info_last AS (
SELECT
A.subject_code AS subject_code -- 科目编码
,SUM(A.debit_amt) AS debit_amt_y -- 借方金额_当年累计
,SUM(IF(A.acnt_mon = '${FORMAT(sStart_mon,"MM")}',A.debit_amt,0)) AS debit_amt_m -- 借方金额_当月累计
2024-10-17 11:20:53 +08:00
FROM dwr.fact_fim_subject_balance A-- 科目余额
JOIN corp B ON A.corp_code = B.corp_code
WHERE A.subject_code like '6601%'
AND A.acnt_year = '${YEAR(sStart_mon) - 1}'
AND A.acnt_mon <= '${FORMAT(sStart_mon,"MM")}'
2024-10-17 11:20:53 +08:00
GROUP BY A.subject_code
),
subject_result AS (
-- 本期统计
SELECT
'广宣费' AS subject_name -- 科目名称
,'660114,660127' AS subject_code -- 科目编码
,SUM(debit_amt_m) AS debit_amt_m -- 借方金额_当月累计
,SUM(debit_amt_y) AS debit_amt_y -- 借方金额_当年累计
,0 AS debit_amt_last_m -- 借方金额_上年同期
,0 AS debit_amt_last_y -- 借方金额_上年累计
FROM base_info_curr
WHERE (subject_code like '660114%' or subject_code like '660127%')
UNION ALL
SELECT
'其中: 广告费' AS subject_name -- 科目名称
,'660114' AS subject_code -- 科目编码
,SUM(debit_amt_m) AS debit_amt_m -- 借方金额_当月累计
,SUM(debit_amt_y) AS debit_amt_y -- 借方金额_当年累计
,0 AS debit_amt_last_m -- 借方金额_上年同期
,0 AS debit_amt_last_y -- 借方金额_上年累计
FROM base_info_curr
WHERE subject_code like '660114%'
UNION ALL
SELECT
' 业务宣传费' AS subject_name -- 科目名称
,'660127' AS subject_code -- 科目编码
,SUM(debit_amt_m) AS debit_amt_m -- 借方金额_当月累计
,SUM(debit_amt_y) AS debit_amt_y -- 借方金额_当年累计
,0 AS debit_amt_last_m -- 借方金额_上年同期
,0 AS debit_amt_last_y -- 借方金额_上年累计
FROM base_info_curr
WHERE subject_code like '660127%'
UNION ALL
SELECT
'职工薪酬' AS subject_name -- 科目名称
,'660150' AS subject_code -- 科目编码
,SUM(debit_amt_m) AS debit_amt_m -- 借方金额_当月累计
,SUM(debit_amt_y) AS debit_amt_y -- 借方金额_当年累计
,0 AS debit_amt_last_m -- 借方金额_上年同期
,0 AS debit_amt_last_y -- 借方金额_上年累计
FROM base_info_curr
WHERE subject_code like '660150%'
UNION ALL
SELECT
'差旅费' AS subject_name -- 科目名称
,'660115' AS subject_code -- 科目编码
,SUM(debit_amt_m) AS debit_amt_m -- 借方金额_当月累计
,SUM(debit_amt_y) AS debit_amt_y -- 借方金额_当年累计
,0 AS debit_amt_last_m -- 借方金额_上年同期
,0 AS debit_amt_last_y -- 借方金额_上年累计
FROM base_info_curr
WHERE subject_code like '660115%'
UNION ALL
SELECT
'折旧费' AS subject_name -- 科目名称
,'660117' AS subject_code -- 科目编码
,SUM(debit_amt_m) AS debit_amt_m -- 借方金额_当月累计
,SUM(debit_amt_y) AS debit_amt_y -- 借方金额_当年累计
,0 AS debit_amt_last_m -- 借方金额_上年同期
,0 AS debit_amt_last_y -- 借方金额_上年累计
FROM base_info_curr
WHERE subject_code like '660117%'
UNION ALL
SELECT
'电商运营费' AS subject_name -- 科目名称
,'660136' AS subject_code -- 科目编码
,SUM(debit_amt_m) AS debit_amt_m -- 借方金额_当月累计
,SUM(debit_amt_y) AS debit_amt_y -- 借方金额_当年累计
,0 AS debit_amt_last_m -- 借方金额_上年同期
,0 AS debit_amt_last_y -- 借方金额_上年累计
FROM base_info_curr
WHERE subject_code like '660136%'
UNION ALL
SELECT
'房租费' AS subject_name -- 科目名称
,'660130' AS subject_code -- 科目编码
,SUM(debit_amt_m) AS debit_amt_m -- 借方金额_当月累计
,SUM(debit_amt_y) AS debit_amt_y -- 借方金额_当年累计
,0 AS debit_amt_last_m -- 借方金额_上年同期
,0 AS debit_amt_last_y -- 借方金额_上年累计
FROM base_info_curr
WHERE subject_code like '660130%'
UNION ALL
SELECT
'会议费' AS subject_name -- 科目名称
,'660125' AS subject_code -- 科目编码
,SUM(debit_amt_m) AS debit_amt_m -- 借方金额_当月累计
,SUM(debit_amt_y) AS debit_amt_y -- 借方金额_当年累计
,0 AS debit_amt_last_m -- 借方金额_上年同期
,0 AS debit_amt_last_y -- 借方金额_上年累计
FROM base_info_curr
WHERE subject_code like '660125%'
UNION ALL
SELECT
'业务招待费' AS subject_name -- 科目名称
,'660167' AS subject_code -- 科目编码
,SUM(debit_amt_m) AS debit_amt_m -- 借方金额_当月累计
,SUM(debit_amt_y) AS debit_amt_y -- 借方金额_当年累计
,0 AS debit_amt_last_m -- 借方金额_上年同期
,0 AS debit_amt_last_y -- 借方金额_上年累计
FROM base_info_curr
WHERE subject_code like '660167%'
UNION ALL
SELECT
'仓储费' AS subject_name -- 科目名称
,'660121' AS subject_code -- 科目编码
,SUM(debit_amt_m) AS debit_amt_m -- 借方金额_当月累计
,SUM(debit_amt_y) AS debit_amt_y -- 借方金额_当年累计
,0 AS debit_amt_last_m -- 借方金额_上年同期
,0 AS debit_amt_last_y -- 借方金额_上年累计
FROM base_info_curr
WHERE subject_code like '660121%'
UNION ALL
SELECT
'通讯费' AS subject_name -- 科目名称
,'660164' AS subject_code -- 科目编码
,SUM(debit_amt_m) AS debit_amt_m -- 借方金额_当月累计
,SUM(debit_amt_y) AS debit_amt_y -- 借方金额_当年累计
,0 AS debit_amt_last_m -- 借方金额_上年同期
,0 AS debit_amt_last_y -- 借方金额_上年累计
FROM base_info_curr
WHERE subject_code like '660164%'
UNION ALL
SELECT
'其他' AS subject_name -- 科目名称
,'0000' AS subject_code -- 科目编码
,SUM(debit_amt_m) AS debit_amt_m -- 借方金额_当月累计
,SUM(debit_amt_y) AS debit_amt_y -- 借方金额_当年累计
,0 AS debit_amt_last_m -- 借方金额_上年同期
,0 AS debit_amt_last_y -- 借方金额_上年累计
FROM base_info_curr
WHERE subject_code like '6601%'
AND (subject_code not like '660114%'
AND subject_code not like '660127%'
AND subject_code NOT like '660150%'
AND subject_code NOT like '660115%'
AND subject_code NOT like '660117%'
AND subject_code NOT like '660136%'
AND subject_code NOT like '660130%'
AND subject_code NOT like '660125%'
AND subject_code NOT like '660167%'
AND subject_code NOT like '660121%'
AND subject_code NOT like '660164%'
)
UNION ALL
SELECT
'合计' AS subject_name -- 科目名称
,'6601' AS subject_code -- 科目编码
,SUM(debit_amt_m) AS debit_amt_m -- 借方金额_当月累计
,SUM(debit_amt_y) AS debit_amt_y -- 借方金额_当年累计
,0 AS debit_amt_last_m -- 借方金额_上年同期
,0 AS debit_amt_last_y -- 借方金额_上年累计
FROM base_info_curr
WHERE subject_code like '6601%'
UNION ALL
-- 上期统计
SELECT
'广宣费' AS subject_name -- 科目名称
,'660114,660127' AS subject_code -- 科目编码
,0 AS debit_amt_m -- 借方金额_当月累计
,0 AS debit_amt_y -- 借方金额_当年累计
,SUM(debit_amt_m) AS debit_amt_last_m -- 借方金额_上年同期
,SUM(debit_amt_y) AS debit_amt_last_y -- 借方金额_上年累计
FROM base_info_last
WHERE (subject_code like '660114%' OR subject_code like '660127%')
UNION ALL
SELECT
'其中: 广告费' AS subject_name -- 科目名称
,'660114' AS subject_code -- 科目编码
,0 AS debit_amt_m -- 借方金额_当月累计
,0 AS debit_amt_y -- 借方金额_当年累计
,SUM(debit_amt_m) AS debit_amt_last_m -- 借方金额_上年同期
,SUM(debit_amt_y) AS debit_amt_last_y -- 借方金额_上年累计
FROM base_info_last
WHERE subject_code like '660114%'
UNION ALL
SELECT
' 业务宣传费' AS subject_name -- 科目名称
,'660127' AS subject_code -- 科目编码
,0 AS debit_amt_m -- 借方金额_当月累计
,0 AS debit_amt_y -- 借方金额_当年累计
,SUM(debit_amt_m) AS debit_amt_last_m -- 借方金额_上年同期
,SUM(debit_amt_y) AS debit_amt_last_y -- 借方金额_上年累计
FROM base_info_last
WHERE subject_code like '660127%'
UNION ALL
SELECT
'职工薪酬' AS subject_name -- 科目名称
,'660150' AS subject_code -- 科目编码
,0 AS debit_amt_m -- 借方金额_当月累计
,0 AS debit_amt_y -- 借方金额_当年累计
,SUM(debit_amt_m) AS debit_amt_last_m -- 借方金额_上年同期
,SUM(debit_amt_y) AS debit_amt_last_y -- 借方金额_上年累计
FROM base_info_last
WHERE subject_code like '660150%'
UNION ALL
SELECT
'差旅费' AS subject_name -- 科目名称
,'660115' AS subject_code -- 科目编码
,0 AS debit_amt_m -- 借方金额_当月累计
,0 AS debit_amt_y -- 借方金额_当年累计
,SUM(debit_amt_m) AS debit_amt_last_m -- 借方金额_上年同期
,SUM(debit_amt_y) AS debit_amt_last_y -- 借方金额_上年累计
FROM base_info_last
WHERE subject_code like '660115%'
UNION ALL
SELECT
'折旧费' AS subject_name -- 科目名称
,'660117' AS subject_code -- 科目编码
,0 AS debit_amt_m -- 借方金额_当月累计
,0 AS debit_amt_y -- 借方金额_当年累计
,SUM(debit_amt_m) AS debit_amt_last_m -- 借方金额_上年同期
,SUM(debit_amt_y) AS debit_amt_last_y -- 借方金额_上年累计
FROM base_info_last
WHERE subject_code like '660117%'
UNION ALL
SELECT
'电商运营费' AS subject_name -- 科目名称
,'660136' AS subject_code -- 科目编码
,0 AS debit_amt_m -- 借方金额_当月累计
,0 AS debit_amt_y -- 借方金额_当年累计
,SUM(debit_amt_m) AS debit_amt_last_m -- 借方金额_上年同期
,SUM(debit_amt_y) AS debit_amt_last_y -- 借方金额_上年累计
FROM base_info_last
WHERE subject_code like '660136%'
UNION ALL
SELECT
'房租费' AS subject_name -- 科目名称
,'660130' AS subject_code -- 科目编码
,0 AS debit_amt_m -- 借方金额_当月累计
,0 AS debit_amt_y -- 借方金额_当年累计
,SUM(debit_amt_m) AS debit_amt_last_m -- 借方金额_上年同期
,SUM(debit_amt_y) AS debit_amt_last_y -- 借方金额_上年累计
FROM base_info_last
WHERE subject_code like '660130%'
UNION ALL
SELECT
'会议费' AS subject_name -- 科目名称
,'660125' AS subject_code -- 科目编码
,0 AS debit_amt_m -- 借方金额_当月累计
,0 AS debit_amt_y -- 借方金额_当年累计
,SUM(debit_amt_m) AS debit_amt_last_m -- 借方金额_上年同期
,SUM(debit_amt_y) AS debit_amt_last_y -- 借方金额_上年累计
FROM base_info_last
WHERE subject_code like '660125%'
UNION ALL
SELECT
'业务招待费' AS subject_name -- 科目名称
,'660167' AS subject_code -- 科目编码
,0 AS debit_amt_m -- 借方金额_当月累计
,0 AS debit_amt_y -- 借方金额_当年累计
,SUM(debit_amt_m) AS debit_amt_last_m -- 借方金额_上年同期
,SUM(debit_amt_y) AS debit_amt_last_y -- 借方金额_上年累计
FROM base_info_last
WHERE subject_code like '660167%'
UNION ALL
SELECT
'仓储费' AS subject_name -- 科目名称
,'660121' AS subject_code -- 科目编码
,0 AS debit_amt_m -- 借方金额_当月累计
,0 AS debit_amt_y -- 借方金额_当年累计
,SUM(debit_amt_m) AS debit_amt_last_m -- 借方金额_上年同期
,SUM(debit_amt_y) AS debit_amt_last_y -- 借方金额_上年累计
FROM base_info_last
WHERE subject_code like '660121%'
UNION ALL
SELECT
'通讯费' AS subject_name -- 科目名称
,'660164' AS subject_code -- 科目编码
,0 AS debit_amt_m -- 借方金额_当月累计
,0 AS debit_amt_y -- 借方金额_当年累计
,SUM(debit_amt_m) AS debit_amt_last_m -- 借方金额_上年同期
,SUM(debit_amt_y) AS debit_amt_last_y -- 借方金额_上年累计
FROM base_info_last
WHERE subject_code like '660164%'
UNION ALL
SELECT
'其他' AS subject_name -- 科目名称
,'0000' AS subject_code -- 科目编码
,0 AS debit_amt_m -- 借方金额_当月累计
,0 AS debit_amt_y -- 借方金额_当年累计
,SUM(debit_amt_m) AS debit_amt_last_m -- 借方金额_上年同期
,SUM(debit_amt_y) AS debit_amt_last_y -- 借方金额_上年累计
FROM base_info_last
WHERE subject_code like '6601%'
AND (subject_code NOT LIKE '660114%'
AND subject_code NOT LIKE '660127%'
AND subject_code NOT LIKE '660150%'
AND subject_code NOT LIKE '660115%'
AND subject_code NOT LIKE '660117%'
AND subject_code NOT LIKE '660136%'
AND subject_code NOT LIKE '660130%'
AND subject_code NOT LIKE '660125%'
AND subject_code NOT LIKE '660167%'
AND subject_code NOT LIKE '660121%'
AND subject_code NOT LIKE '660164%')
UNION ALL
SELECT
'合计' AS subject_name -- 科目名称
,'6601' AS subject_code -- 科目编码
,0 AS debit_amt_m -- 借方金额_当月累计
,0 AS debit_amt_y -- 借方金额_当年累计
,SUM(debit_amt_m) AS debit_amt_last_m -- 借方金额_上年同期
,SUM(debit_amt_y) AS debit_amt_last_y -- 借方金额_上年累计
FROM base_info_last
WHERE subject_code like '6601%'
)
,tmp_data AS (
SELECT
replace(a.subject_name,'',': ') AS subject_name -- 科目名称
,SUM(a.amt) AS amt
FROM sdi_oth.ods_finance_budget_data a
JOIN corp b
on a.corp_name = b.corp_name
WHERE fee_type = '销售费用'
AND LEFT(years,4) = '${YEAR(sStart_mon)}'
GROUP BY replace(a.subject_name,'',': ')
)
2024-10-17 11:20:53 +08:00
SELECT
a.subject_name AS subject_name -- 科目名称
2024-10-17 11:20:53 +08:00
,subject_code AS subject_code -- 科目编码
,IFNULL(SUM(debit_amt_m ) / 10000,0) AS debit_amt_m -- 借方金额_当月累计
,IFNULL(SUM(debit_amt_y ) / 10000,0) AS debit_amt_y -- 借方金额_当年累计
,IFNULL(SUM(debit_amt_last_m) / 10000,0) AS debit_amt_last_m -- 借方金额_上年同期
,IFNULL(SUM(debit_amt_last_y) / 10000,0) AS debit_amt_last_y -- 借方金额_上年累计
,IFNULL(SUM(b.amt),0) AS debit_amt_yusuan
FROM
(
SELECT
subject_name AS subject_name -- 科目名称
,subject_code AS subject_code -- 科目编码
,SUM(debit_amt_m) AS debit_amt_m -- 借方金额_当月累计
,SUM(debit_amt_y) AS debit_amt_y -- 借方金额_当年累计
,SUM(debit_amt_last_m) AS debit_amt_last_m -- 借方金额_上年同期
,SUM(debit_amt_last_y) AS debit_amt_last_y -- 借方金额_上年累计
FROM subject_result
GROUP BY
subject_name
,subject_code
)a
LEFT JOIN tmp_data b
ON a.subject_name = b.subject_name
2024-10-17 11:20:53 +08:00
GROUP BY
a.subject_name,subject_code
2024-10-17 11:20:53 +08:00
ORDER BY
DECODE(a.subject_name,'广宣费','a','其中: 广告费','b',' 业务宣传费','c','职工薪酬','d','差旅费','e','折旧费','f','电商运营费','g','房租费','h','会议费','i','业务招待费','j','仓储费','k','通讯费','l','其他','m','合计','n')