如何在SQL中连接两个查询

如何在SQL中连接两个查询,sql,Sql,我想加入两个SQL查询 第一个问题: SELECT rp_date, key_code, sum(case when rp_id=15102 then rp_value else null end) as users_completed, sum(case when rp_id=15108 then rp_value else null end) as users_inProgress FROM te_rp_pc_rate WHERE abc_co

我想加入两个SQL查询

第一个问题:

SELECT 
    rp_date, key_code, 
    sum(case when rp_id=15102 then rp_value else null end) as users_completed, 
    sum(case when rp_id=15108 then rp_value else null end) as users_inProgress 
FROM
    te_rp_pc_rate
WHERE
    abc_code = 'A204'
    AND organisation_id = '444-4'
    AND key_ code = '#KL0560' 
GROUP BY
    rp_date, key_code 
ORDER BY 
    rp_date DESC, key_code 
LIMIT 100;
第二个问题:

SELECT 
    cr_date  
    sum(case when rp_id=23101 then rp_value else null end) AS prim_kfc 
FROM
    te_emk_rate
WHERE 
    abc_code = 'A204'
    AND organisation_id = '444-4' 
    AND ref_value = 0
GROUP BY
    cr_date 
ORDER BY 
    cr_date DESC 
LIMIT 100;
加入时应使用日期(
cr\u日期
rp\u日期
)。对于第一个查询的
rp\u日期
,对于第二个
cr\u日期


目标是获取同一日期的行中的列。我已经尝试过了,但是结果太高。

您可以将查询放入子查询中并将其联接。大概是这样的:

SELECT *
FROM (
    SELECT rp_date, key_code, 
        sum(case when rp_id=15102 then rp_value else null end) as users_completed, 
        sum(case when rp_id=15108 then rp_value else null end) as users_inProgress 
    from te_rp_pc_rate
    WHERE abc_code = 'A204'
        AND organisation_id = '444-4'
        AND key_ code = '#KL0560' 
    group by rp_date, key_code 
    Order By rp_date DESC, key_code 
    LIMIT 100;
) as q1

LEFT JOIN (
    SELECT cr_date, key_code  
    sum(case when rp_id=23101 then rp_value else null end) as prim_kfc 
    from te_emk_rate
    WHERE abc_code = 'A204'
    AND organisation_id = '444-4' 
    AND ref_value = 0
    group by cr_date, key_code 
    Order By cr_date DESC, key_code 
    LIMIT 100;
) as q2
on q1.rp_date = q2.cr_date

您可以将查询放入子查询并将其联接。大概是这样的:

SELECT *
FROM (
    SELECT rp_date, key_code, 
        sum(case when rp_id=15102 then rp_value else null end) as users_completed, 
        sum(case when rp_id=15108 then rp_value else null end) as users_inProgress 
    from te_rp_pc_rate
    WHERE abc_code = 'A204'
        AND organisation_id = '444-4'
        AND key_ code = '#KL0560' 
    group by rp_date, key_code 
    Order By rp_date DESC, key_code 
    LIMIT 100;
) as q1

LEFT JOIN (
    SELECT cr_date, key_code  
    sum(case when rp_id=23101 then rp_value else null end) as prim_kfc 
    from te_emk_rate
    WHERE abc_code = 'A204'
    AND organisation_id = '444-4' 
    AND ref_value = 0
    group by cr_date, key_code 
    Order By cr_date DESC, key_code 
    LIMIT 100;
) as q2
on q1.rp_date = q2.cr_date

你能分享你的加入版本吗?这是我的加入
选择e.cr\u日期,p.rp\u日期,p.key\u代码,sum(p.rp\u id=15102时,p.rp\u值为空结束)作为用户完成,sum(p.rp\u id=15108时,p.rp\u值为空结束)作为用户进行,sum(e.rp\u id=23101时,e.rp\u值为空结束)作为te\u rp\u pc\u费率p的主要kfc,e.organization\u id=p.organization\u id和e.cr\u date=p.rp\u date和p.organization\u id='444-4'和e.abc\u code=p.abc\u code和p.abc\u code='A204'组按e.cr\u date,p.rp\u date,p.key\u code顺序按p.rp\u date描述DBM,e.cr\u date描述限制100
?SQL请求应该始终使用您正在使用的DBMS进行标记,因为答案可能在很大程度上取决于DBMS。我不知道它背后是哪个DBMS。我们使用云数据,你可以分享你的join版本吗?这是我的join
选择e.cr_日期、p.rp_日期、p.key_代码、sum(p.rp_id=15102的情况下,p.rp_值为null end)作为用户完成,sum(p.rp_id=15108的情况下,p.rp_值为null end)作为用户完成,sum(e.rp_id=23101的情况下,e.rp_值为null end)作为te_rp_pc_rate p、te_emk_rate e的首席肯德基,其中e.Organization_id=p.Organization_id和e.cr_date=p.rp_date和p.Organization_id='444-4'和e.abc_代码=p.abc_代码和p.abc_代码='A204'按e.cr_日期分组,p.rp_日期,p.cr_代码顺序按p.rp_日期描述,e.cr_日期描述限制100
您的DBMS是什么?SQL请求应该始终使用您正在使用的DBMS进行标记,因为答案可能在很大程度上取决于DBMS。我不知道它背后是哪个DBMS。我们使用云数据。OP必须决定是使用内部联接、左外部联接还是完全外部联接来获得他们想要的结果。我想我需要一个内部联接。我们不能将其作为一个sql查询来解决吗?正确。OP必须决定是使用内部联接、左外部联接还是完全外部联接来获得他们想要的结果。我想我需要一个内部联接我们不能将其作为一个sql查询来解决吗?