如何在SQL中连接两个查询
我想加入两个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
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查询来解决吗?