-
帆软用户RYtgqeGMo6(提问者)
- 但是筛选框里面有日期,数据源里面有日期,相同的编号,在每个月维护的时候名字维护的不太一致,其实是一个东西,如果在数据源里面处理的话,那日期字段肯定是要丢掉的,但是不同的月相同编号,不同名称不可能合并到一起,只取一个的
-
CD20160914 回复 帆软用户RYtgqeGMo6(提问者)
- 我说的是判断前面比如121B001这个判断,如果它后面的值有多个就随便取一个。。就行了,因为你的121B001是三行,那么也是重复了,所以只管121B001有多少行就行了
-
帆软用户RYtgqeGMo6(提问者)
- 好像明白了,感谢
-
帆软用户RYtgqeGMo6(提问者)
- -- 第一个 CTE:筛选出 labor_code_model_version 为 '111P038MGRX8' 的数据,并按 labor_name 长度降序排名
WITH RankedLaborNames AS (
SELECT
labor_code_model_version,
labor_name,
ROW_NUMBER() OVER (
PARTITION BY labor_code_model_version
ORDER BY LEN(labor_name) DESC
) AS rn
FROM
guest.claim_labor_data
WHERE
labor_code_model_version = '111P038MGRX8'
),
-- 第二个 CTE:对 labor_code_model_version 为 '111P038MGRX8' 的数据进行分组聚合
ClaimsSummary AS (
SELECT
buyoff_company_code,
approval_company_code,
country_code,
year_month,
labor_code_model_version,
SUM(settlement_total_amount) AS total_claim_amount,
COUNT(claim_no) AS total_claim_qty
FROM
guest.claim_labor_data
WHERE
labor_code_model_version = '111P038MGRX8'
GROUP BY
buyoff_company_code,
approval_company_code,
country_code,
year_month,
labor_code_model_version
)
-- 主查询:将两个 CTE 的结果通过 labor_code_model_version 关联起来,并只取 RankedLaborNames 中排名为 1 的记录
SELECT
-- cs.buyoff_company_code,
-- cs.approval_company_code,
-- cs.country_code,
-- cs.year_month,
-- cs.labor_code_model_version,
-- rln.labor_name,
sum( cs.total_claim_amount) as aa,
sum(cs.total_claim_qty)
FROM
ClaimsSummary cs
JOIN
RankedLaborNames rln
ON
cs.labor_code_model_version = rln.labor_code_model_version
WHERE
rln.rn = 1;
|