WITH T0 as ( WITH T0 as ( SELECT "貝桝" as name, "A" as TEL1, "B" as TEL2, "C" as TEL3 UNION ALL SELECT "貝桝" as name, "B" as TEL1, null as TEL2, null as TEL3 -- UNION ALL -- SELECT -- "貝桝" as name, -- "B" as TEL1, -- "L" as TEL2, -- "N" as TEL3 -- UNION ALL -- SELECT -- "貝桝" as name, -- "D" as TEL1, -- "K" as TEL2, -- null as TEL3 -- UNION ALL -- SELECT -- "貝桝" as name, -- "A" as TEL1, -- "D" as TEL2, -- "F" as TEL3 -- UNION ALL -- SELECT -- "貝桝" as name, -- "K" as TEL1, -- null as TEL2, -- null as TEL3 -- UNION ALL -- SELECT -- "貝桝" as name, -- "G" as TEL1, -- null as TEL2, -- null as TEL3 ), T1 as ( SELECT *, ROW_NUMBER() OVER (PARTITION BY name order by tel1,tel2,tel3) as KK FROM T0 ), T2 as ( SELECT T1.*, T01.name as T01_name, T01.TEL1 as T01_TEL1, T01.TEL2 as T01_TEL2, T01.TEL3 as T01_TEL3, T01.KK as T01_KK, FROM T1,T1 as T01 where T1.name = T01.name and T1.KK != T01.KK and (T01.TEL1 IN (T1.TEL1,T1.TEL2,T1.TEL3) ) ) ,FN AS ( SELECT name, TEL1, STRING_AGG(CONCAT(IFNULL(TEL2,"@"),",",IFNULL(TEL3,"@"),",",IFNULL(T01_TEL1,"@"),",",IFNULL(T01_TEL2,"@"),",",IFNULL(T01_TEL3,"@"))) as GG, IFNULL(LENGTH(REPLACE(STRING_AGG(CONCAT(IFNULL(TEL2,"@"),",",IFNULL(TEL3,"@"),",",IFNULL(T01_TEL1,"@"),",",IFNULL(T01_TEL2,"@"),",",IFNULL(T01_TEL3,"@"))),"@","")),0) as FF_LN, ROW_NUMBER() OVER (PARTITION BY name order by TEL1, STRING_AGG(CONCAT(IFNULL(TEL2,"@"),",",IFNULL(TEL3,"@"),",",IFNULL(T01_TEL1,"@"),",",IFNULL(T01_TEL2,"@"),",",IFNULL(T01_TEL3,"@"))) ) as K FROM T2 GROUP BY 1,2) ,without as (--除外 SELECT FN.name, FN1.K FROM FN LEFT JOIN FN as FN1 ON FN.name = FN1.name AND FN.K != FN1.K AND FN.FF_LN > FN1.FF_LN WHERE FN1.K is not null ) ,FN2 as ( SELECT FN.name, SPLIT(CONCAT(TEL1,",",GG),",") as GG1, ROW_NUMBER() OVER (PARTITION BY FN.name order by CONCAT(TEL1,",",GG)) as K FROM FN LEFT JOIN without ON FN.name = without.name and FN.K = without.K WHERE without.name is null) ,FN3 as ( SELECT DISTINCT name, v, K FROM FN2 , UNNEST(GG1) AS v) SELECT * FROM FN3 WHERE v != "@"
コメントを残す