首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >完全连接:选择我加入的键

完全连接:选择我加入的键
EN

Stack Overflow用户
提问于 2018-01-24 09:50:13
回答 1查看 37关注 0票数 0

这是我从这里开始的桌子

代码语言:javascript
复制
CMS   |   defect_status 
________________________
1     |   true
2     |   false
3     |   true
3     |   false

这就是我想要的

代码语言:javascript
复制
   CMS    |      true_defects    |   false_defects
   1      |      1               |   0
   2      |      0               |   1
   3      |      1               |   1

这是我的密码

代码语言:javascript
复制
SELECT DISTINCT
    false_table.CMS, 
    true_table.true_defects,
    false_table.false_defects

FROM(
    SELECT DISTINCT 
        CMS,
        COUNT(*) AS true_defects 
    FROM data_table
    WHERE defect_status = 'true'
    GROUP BY CMS 
) as true_table

FULL JOIN(
    SELECT DISTINCT 
        CMS,
        COUNT(*) AS false_defects 
    FROM data_table
    WHERE defect_status = 'false'
    GROUP BY CMS 
) as false_table
ON true_table.CMS = false_table.CMS

我想选择所有的CMS,那些在"false_table“和"true_table”。如果我选择"false_table.CMS“(如上面的代码中所示),下面是我得到的内容:

代码语言:javascript
复制
CMS    |      true_defects    |   false_defects
2      |      0               |   1
3      |      1               |   1

CMS "1“消失只是因为它不在列false_table.CMS中

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-24 10:09:52

您可以通过简单的casegroup by实现它,如下所示:

代码语言:javascript
复制
SELECT t1.CMS
    ,sum(CASE defect_status
            WHEN true
                THEN 1
            ELSE 0
            END) AS true_status
    ,sum(CASE defect_status
            WHEN false
                THEN 1
            ELSE 0
            END) AS false_status
FROM Table1 AS t1
GROUP BY CMS

演示链接:http://sqlfiddle.com/#!17/8478d/1

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48419355

复制
相关文章

相似问题

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