加入两个sql结果

问题描述 投票:0回答:1

我有两个查询,并且都在具有相似列的两个表上工作,查询1产生以下结果,因为该结果有46行-此处显示了其中的一部分。

enter image description here

查询2产生以下结果,

enter image description here

现在,我想按以下方式进行合并,结果应具有46行以上(取决于基于WC的相似度)。这两个结果都有“ SS(SS会话)”列。

enter image description here

这是我尝试过的,

select ss, wc, wc_efficiency1, wc_efficiency2 from
(
    Query 1
) t1

join

(
    Query 2
) t2
ON t1.ss = t2.ss

但是查询不会执行,显示错误,即使我做了一些更改以克服错误,它也会无限期运行,没有输出。

sql h2
1个回答
1
投票

有几种方法可以解决此问题,这取决于查询1和查询2的结果是否唯一,需要显示为单行还是需要以某种方式汇总/计算效率。

如果结果是唯一的(不会有相同的SS + WC组合,那么您可以执行以下操作:

SELECT ss, wc, wc_efficiency
FROM query1
UNION ALL
SELECT ss, wc, wc_efficiency
FROM query2

如果结果是not唯一的,这意味着两个查询中可能都有SS + WC的组合,那么您可以执行以下操作:

SELECT 
    q1.ss, 
    q1.wc, 
    q1.wc_efficiency AS [wc_efficiency1],
    q2.wc_efficiency AS [wc_efficiency2]
FROM QUERY1 q1, QUERY2 q2
WHERE q1.ss = q2.ss 
AND q1.wc = q2.wc

OR

SELECT
    CASE 
        WHEN q1.ss IS NOT NULL THEN q1.ss
        WHEN q2.ss IS NOT NULL THEN q2.ss
    END AS [ss],
    CASE 
        WHEN q1.wc IS NOT NULL THEN q1.wc
        WHEN q2.wc IS NOT NULL THEN q2.wc
    END AS [wc],
    q1.wc_efficiency AS [wc_efficiency1],
    q2.wc_efficiency AS [wc_efficiency2]
FROM QUERY1 q1
    FULL OUTER JOIN QUERY2 q2
    ON q1.ss = q2.ss AND q1.wc = q2.wc

我更喜欢后一种选项,但是它们都应该类似地工作,如果您不希望将空值用于报告/绘图,则可以使用ISNULL将wc_efficiency设置为0 ...

编辑:忘记了,如果第二个查询中的某些内容不在第一组结果中,则需要考虑这一点,您可能需要使用其他联接,但也可以使用case语句,我将编辑第三个上面的选项来反映这一点。

© www.soinside.com 2019 - 2024. All rights reserved.