加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

SQL:根据其他列中的多个条件计算一列中的不同值

发布时间:2021-03-02 07:04:10 所属栏目:编程 来源:网络整理
导读:我试图按照多个尺度计较差异的值. 示例数据操练包罗在下面. Table1╔════════╦════════╦══════╗║ Bug ID ║ Status ║ Test ║╠════════╬════════╬══════╣║ 1 ║ Open ║ w ║║ 2 ║ Closed ║ w ║║

我试图按照多个尺度计较差异的值.
示例数据操练包罗在下面.

           Table1
╔════════╦════════╦══════╗
║ Bug ID ║ Status ║ Test ║
╠════════╬════════╬══════╣
║      1 ║ Open   ║ w    ║
║      2 ║ Closed ║ w    ║
║      3 ║ Open   ║ w    ║
║      4 ║ Open   ║ x    ║
║      4 ║ Open   ║ x    ║
║      5 ║ Closed ║ x    ║
║      5 ║ Closed ║ x    ║
║      5 ║ Closed ║ y    ║
║      6 ║ Open   ║ z    ║
║      6 ║ Open   ║ z    ║
║      6 ║ Open   ║ z    ║
║      7 ║ Closed ║ z    ║
║      8 ║ Closed ║ z    ║
╚════════╩════════╩══════╝
      Desired Query Results
╔══════╦═══════════╦════════════╗
║ Test ║ Open Bugs ║ Total Bugs ║
╠══════╬═══════════╬════════════╣
║ w    ║         2 ║          3 ║
║ x    ║         1 ║          2 ║
║ y    ║         0 ║          1 ║
║ z    ║         1 ║          3 ║
╚══════╩═══════════╩════════════╝

给定的Bug可以在多个测试中找到,多次用于沟通的测试(譬喻:6)或两者(譬喻:5).

以下查询可以正常转达’Total Bugs’

SELECT
Test,COUNT(DISTINCT Bug ID) AS "Total Bugs"
FROM
Table1
GROUP BY Test

我的研究让我对以下查询举办了修改.他们错过了明明的错误,因此返回“Open Bugs”列的错误功效(表现在查询下方)

SELECT
Test,SUM(CASE WHEN Status <> 'Closed' THEN 1 ELSE 0 END) AS "Open Bugs"
FROM
Table1
GROUP BY Test
╔══════╦═══════════╗
║ Test ║ Open Bugs ║
╠══════╬═══════════╣
║ w    ║         2 ║
║ x    ║         2 ║
║ y    ║         0 ║
║ z    ║         3 ║
╚══════╩═══════════╝

虽然,我的最终功效必需在一个表中提供两个计数列(而不是像我为演示目标那样行使单独的查询).

我不想依靠多个子查询,由于我的实例将有两个以上的列,个中包括来自统一个表但各类尺度的计数.

我正在行使SQL Server(不确定宣布).

任何辅佐是极大的赞赏.

办理要领

您可以行使以下代码举办前提计数(差异):
SELECT Test,COUNT(DISTINCT "Bug ID") AS "Total Bugs",count(distinct (CASE WHEN "Status" <> 'Closed' THEN "Bug ID" END)) as "Open Bugs"
FROM Table1
GROUP BY Test

案例告诉搜查前提.假如为true,则返回Bug ID.假如不存在,则默以为NULL,因此不管帐算id.

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读