首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从UNION set运算符中删除空值

从UNION set运算符中删除空值
EN

Stack Overflow用户
提问于 2019-09-09 06:38:08
回答 2查看 235关注 0票数 0

我们应该如何消除空值而不是将其保留在单独的行中,值必须驻留在列中,从而通过使用执行结果集中的联合集运算符使空值消失?

考虑一下简单的SQL查询。

代码语言:javascript
复制
SELECT
  *
FROM
  (
    (SELECT
      6 + 2 AS addition,
      NULL AS subtraction,
      NULL AS multiplication,
      NULL AS division
    FROM
      DUAL)
    UNION
    (SELECT
      NULL AS addition,
      6 - 2 AS subtraction,
      NULL AS multiplication,
      NULL AS division
    FROM
      DUAL)
    UNION
    (SELECT
      NULL AS addition,
      NULL AS subtraction,
      6 * 2 AS multiplication,
      NULL AS division
    FROM
      DUAL)
    UNION
    (SELECT
      NULL AS addition,
      NULL AS subtraction,
      NULL AS multiplication,
      6 / 2 AS division
    FROM
      DUAL)
  ) A;

实际结果:

代码语言:javascript
复制
+----------+-------------+----------------+----------+
| addition | subtraction | multiplication | division |
+----------+-------------+----------------+----------+
|        8 |        NULL |          NULL  |     NULL |
|     NULL |           4 |          NULL  |     NULL |
|     NULL |        NULL |            12  |     NULL |
|     NULL |        NULL |          NULL  |   3.0000 |
+----------+-------------+----------------+----------+
4 rows in set (0.00 sec)

预期结果:

代码语言:javascript
复制
+----------+-------------+----------------+----------+
| addition | subtraction | multiplication | division |
+----------+-------------+----------------+----------+
|        8 |           4 |          12    |   3.0000 |
+----------+-------------+----------------+----------+
1 row in set (0.00 sec)

SQL Demo

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-09 06:39:23

你可以在下面试试-

代码语言:javascript
复制
SELECT
  max(addition) as addition,max(subtraction) as subtraction, max(multiplication) as multiplication,max(division) as division
FROM
  (
    (SELECT
      6 + 2 AS addition,
      NULL AS subtraction,
      NULL AS multiplication,
      NULL AS division
    FROM
      DUAL)
    UNION
    (SELECT
      NULL AS addition,
      6 - 2 AS subtraction,
      NULL AS multiplication,
      NULL AS division
    FROM
      DUAL)
    UNION
    (SELECT
      NULL AS addition,
      NULL AS subtraction,
      6 * 2 AS multiplication,
      NULL AS division
    FROM
      DUAL)
    UNION
    (SELECT
      NULL AS addition,
      NULL AS subtraction,
      NULL AS multiplication,
      6 / 2 AS division
    FROM
      DUAL)
  ) A;
票数 1
EN

Stack Overflow用户

发布于 2019-09-09 07:47:48

这个应该行。

代码语言:javascript
复制
SELECT
 sum(isnull(addition,0)) addition
 ,sum(isnull(subtraction,0)) subtraction
 ,sum(isnull(multiplication,0)) multiplication
 ,sum(isnull(division,0)) division
FROM
  (
    (SELECT
      6 + 2 AS addition,
      NULL AS subtraction,
      NULL AS multiplication,
      NULL AS division
    )
    UNION
    (SELECT
      NULL AS addition,
      6 - 2 AS subtraction,
      NULL AS multiplication,
      NULL AS division
    )
    UNION
    (SELECT
      NULL AS addition,
      NULL AS subtraction,
      6 * 2 AS multiplication,
      NULL AS division
    )
    UNION
    (SELECT
      NULL AS addition,
      NULL AS subtraction,
      NULL AS multiplication,
      6 / 2 AS division
    )
  ) A
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57848916

复制
相关文章

相似问题

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