首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >连接两个SELECT语句结果

连接两个SELECT语句结果
EN

Stack Overflow用户
提问于 2012-05-11 00:36:35
回答 5查看 741.8K关注 0票数 228

可以在一条语句中连接两条sql SELECT语句的结果吗?我有一个任务数据库,其中每个记录都是一个独立的任务,有截止日期(还有一个PALT,它只是从开始到截止日期的天数的INTAge也是INT天数。)

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

我可以很容易地在不同的表中获得这些数据,如下所示:

代码语言:javascript
运行
复制
SELECT ks, COUNT(*) AS '# Tasks' FROM Table GROUP BY ks

返回如下数据:

代码语言:javascript
运行
复制
ks        # Tasks
person1   7
person2   3

然后我得到了:

代码语言:javascript
运行
复制
SELECT ks, COUNT(*) AS '# Late' FROM Table WHERE Age > Palt GROUP BY ks

它返回:

代码语言:javascript
运行
复制
ks        # Late
person1   1
person2   1

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

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

我也尝试过对满足条件的行执行某种count()操作,但我也不知道该怎么做。如果可能的话,这也是可行的。

附录:对不起,我希望我的结果包含KSTasksLate的列

代码语言:javascript
运行
复制
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语句也可以使用,使用LEFT JOIN连接它们也可以,我现在了解了如何以这种方式连接多个select

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-05-11 00:40:20

代码语言:javascript
运行
复制
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);
票数 345
EN

Stack Overflow用户

发布于 2012-05-11 00:40:36

尝试如下所示:

代码语言:javascript
运行
复制
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
票数 98
EN

Stack Overflow用户

发布于 2012-05-11 00:40:48

使用UNION

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
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
票数 55
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10538539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档