组合两个Teradata SQL查询

组合两个Teradata SQL查询,sql,teradata,Sql,Teradata,我想将以下两个查询合并成一个查询。下面是两个问题。有人知道这是否可能吗?第二个查询中的聚合让我觉得不是,但我想我会把它扔给专家们看看你的想法 问题1: SELECT a.id, a.ord_nb, a.scr, a.fr, a.rank, CASE WHEN tp.tps_jnr_cn > 0 THEN 'Jnrs' WHEN tp.tps_chld_cn > 0 THEN 'Chld' WHEN tp

我想将以下两个查询合并成一个查询。下面是两个问题。有人知道这是否可能吗?第二个查询中的聚合让我觉得不是,但我想我会把它扔给专家们看看你的想法

问题1:

SELECT  a.id, a.ord_nb, a.scr,
        a.fr,
        a.rank,
        CASE WHEN tp.tps_jnr_cn > 0 THEN 'Jnrs'
        WHEN tp.tps_chld_cn > 0 THEN 'Chld'
        WHEN tp.tps_ifnt_cn > 0 THEN 'Ifnt'
        WHEN tp.tps_snr_cn > 0 THEN 'Snrs'
        ELSE 'Non'
        END AS Party_Seg,
        CASE WHEN gx.id IS NOT NULL THEN 1 ELSE 0 END 
        AS rpt
FROM    xi.aff a
LEFT JOIN oper.d_tps tp
    ON tp.tps_id = a.ord_nb
LEFT JOIN XI.gst_exprnc gx
    ON a.id = gx.id
    AND tp.strt_dt > gx.strt_dts + INTERVAL '30' DAY
    AND gx.exprnc_typ_id IN (309) --Park Experience
QUALIFY Row_Number() Over (
PARTITION BY ord_nb, scr, fr 
ORDER BY rank DESC) = 1
ORDER BY ord_nb, fr, scr
问题2:

SELECT  a.ord_nb,
        a.fr, Max(a.rank), Min(a.rank),
        Max(a.rank) - Min(a.rank)
FROM    (
    SELECT  ord_nb, fr, rank 
    FROM    xi.aff
    QUALIFY Row_Number() Over (
    PARTITION BY ord_nb, fr, scr
    ORDER BY rank DESC) = 1
        ) a
GROUP BY 1, 2
ORDER BY ord_nb, fr

考虑将两个查询作为派生表连接:

SELECT t1.*, t2.Min_Rank, t2.Max_Rank, t2.Max_Min_Diff_Rank
FROM
  ([--INSERT 1ST QUERY REMOVING ORDER BY AT END--]) t1
INNER JOIN
  ([--INSERT 2ND QUERY REMOVING ORDER BY AT END AND NAMING RANK COLUMNS--]) t2
ON t1.ord_nb = t2.ord_nbAND t2.fr = t2.fr
ORDER BY t1.ord_nb, t1.fr, t1.scr

你说的“联合”到底是什么意思?将第二个查询中的列添加到第一个查询中?我收到一个错误,上面写着“语法错误,应该是“.”和“Min”关键字之间的“UDFCALLNAME”键。”目前,在第二个查询中,您没有为
Min()
MAX()
聚合列提供别名。尝试将它们命名为Min_Rank、Max_Rank、Max_Min_Diff_Rank,因为我尝试在代码中进行注释。