联接两个SELECT语句结果

是否可以SELECT在一条语句中加入2条sql 语句的结果?我有一个任务数据库,其中每个记录都是一个单独的任务,带有截止日期(并且a PALT,INT从开始到截止日期只有几天的时间。 Age也是INT几天的时间。)


我想要一个表,其中包含表中的每个人,他们拥有的LATE任务数以及他们拥有的任务数(如果有)。


我可以轻松地在单独的表中获取此数据,如下所示:


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

返回数据,例如:


ks        # Tasks

person1   7

person2   3

然后我有:


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

返回:


ks        # Late

person1   1

person2   1

我想加入这两个select语句的结果(通过KS)


我试图避免使用临时表,但是如果这是唯一可行的方法,那么我想了解更多有关以这种方式使用临时表的信息。


我也尝试做一些count()满足条件的行,但是我也不知道怎么做。如果可能的话,那也可以。


附录:对不起,我想我的结果有列KS,Tasks和Late


KS        # Tasks   # Late

person1   7         1

person2   3         1

person3   2         0  (or null)

另外,即使他们没有迟到的任务,我也希望一个人出现。


SUM(CASE WHEN Age > Palt THEN 1 ELSE 0 END) Late

效果很好,谢谢您的回答!


两个select语句也可以工作,使用a LEFT JOIN将它们联接也可以,并且我现在了解如何以select这种方式联接多个s


Cats萌萌
浏览 582回答 3
3回答

长风秋雁

SELECT t1.ks, t1.[# Tasks], COALESCE(t2.[# Late], 0) AS [# Late]FROM     (SELECT ks, COUNT(*) AS '# Tasks' FROM Table GROUP BY ks) t1LEFT JOIN    (SELECT ks, COUNT(*) AS '# Late' FROM Table WHERE Age > Palt GROUP BY ks) t2ON (t1.ks = t2.ks);

湖上湖

尝试这样的事情: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) t2ON t1.ks = t2.ks

紫衣仙女

用途UNION:SELECT ks, COUNT(*) AS '# Tasks' FROM Table GROUP BY ksUNIONSELECT ks, COUNT(*) AS '# Late' FROM Table WHERE Age > Palt GROUP BY ks或者,UNION ALL如果您想重复:SELECT ks, COUNT(*) AS '# Tasks' FROM Table GROUP BY ksUNION ALLSELECT ks, COUNT(*) AS '# Late' FROM Table WHERE Age > Palt GROUP BY ks
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

SQL Server