为了账号安全,请及时绑定邮箱和手机立即绑定

联接两个SELECT语句结果

联接两个SELECT语句结果

Cats萌萌 2019-12-10 09:50:04
是否可以SELECT在一条语句中加入2条sql 语句的结果?我有一个任务数据库,其中每个记录都是一个单独的任务,带有截止日期(并且a PALT,INT从开始到截止日期只有几天的时间。 Age也是INT几天的时间。)我想要一个表,其中包含表中的每个人,他们拥有的LATE任务数以及他们拥有的任务数(如果有)。我可以轻松地在单独的表中获取此数据,如下所示:SELECT ks, COUNT(*) AS '# Tasks' FROM Table GROUP BY ks返回数据,例如:ks        # Tasksperson1   7person2   3然后我有:SELECT ks, COUNT(*) AS '# Late' FROM Table WHERE Age > Palt GROUP BY ks返回:ks        # Lateperson1   1person2   1我想加入这两个select语句的结果(通过KS)我试图避免使用临时表,但是如果这是唯一可行的方法,那么我想了解更多有关以这种方式使用临时表的信息。我也尝试做一些count()满足条件的行,但是我也不知道怎么做。如果可能的话,那也可以。附录:对不起,我想我的结果有列KS,Tasks和LateKS        # Tasks   # Lateperson1   7         1person2   3         1person3   2         0  (or null)另外,即使他们没有迟到的任务,我也希望一个人出现。SUM(CASE WHEN Age > Palt THEN 1 ELSE 0 END) Late效果很好,谢谢您的回答!两个select语句也可以工作,使用a LEFT JOIN将它们联接也可以,并且我现在了解如何以select这种方式联接多个s
查看完整描述

3 回答

?
长风秋雁

TA贡献1757条经验 获得超7个赞

SELECT t1.ks, t1.[# Tasks], COALESCE(t2.[# Late], 0) AS [# Late]

FROM 

    (SELECT ks, COUNT(*) AS '# Tasks' FROM Table GROUP BY ks) t1

LEFT JOIN

    (SELECT ks, COUNT(*) AS '# Late' FROM Table WHERE Age > Palt GROUP BY ks) t2

ON (t1.ks = t2.ks);


查看完整回答
反对 回复 2019-12-10
?
湖上湖

TA贡献2003条经验 获得超2个赞

尝试这样的事情:


SELECT 

FROM

(SELECT ks, COUNT(*) AS '# Tasks' FROM Table GROUP BY ks) t1 

INNER JOIN

(SELECT ks, COUNT(*) AS '# Late' FROM Table WHERE Age > Palt GROUP BY ks) t2

ON t1.ks = t2.ks


查看完整回答
反对 回复 2019-12-10
?
紫衣仙女

TA贡献1839条经验 获得超15个赞

用途UNION:


SELECT ks, COUNT(*) AS '# Tasks' FROM Table GROUP BY ks

UNION

SELECT ks, COUNT(*) AS '# Late' FROM Table WHERE Age > Palt GROUP BY ks

或者,UNION ALL如果您想重复:


SELECT ks, COUNT(*) AS '# Tasks' FROM Table GROUP BY ks

UNION ALL

SELECT ks, COUNT(*) AS '# Late' FROM Table WHERE Age > Palt GROUP BY ks


查看完整回答
反对 回复 2019-12-10
  • 3 回答
  • 0 关注
  • 580 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信