组合两个Teradata SQL查询
我想将以下两个查询合并成一个查询。下面是两个问题。有人知道这是否可能吗?第二个查询中的聚合让我觉得不是,但我想我会把它扔给专家们看看你的想法 问题1:组合两个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
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,因为我尝试在代码中进行注释。