【问题标题】:How to make a view with 3 columns and each have different condition如何制作具有 3 列且每列具有不同条件的视图
【发布时间】:2016-03-10 12:00:25
【问题描述】:

我想创建一个包含 A 列(选择 A 条件 =>10 )、B (条件 =>5 )、C (选择 C ​​条件 =>100 )的视图。

 SELECT
(SELECT A FROM Table1 WHERE A > 10) AS 'Group1',
(SELECT B FROM Table1 WHERE B > 5) AS 'Group2',
(SELECT C FROM Table1 WHERE C > 100) AS 'Group3',

FROM Table

此查询会带来所需的结果,但也会在其他列条件不匹配的情况下使用空值填充列。如何避免空值

【问题讨论】:

  • stackoverflow.com/questions/2281890/… 帮助创建带参数的视图,以便您可以使用单个视图并将参数传递给不同的值。
  • 向我们展示您为自己解决这个简单查询所做的工作。请阅读What topics can I ask aboutHow to ask a good question SO 不是免费的编码服务
  • 样本数据和针对该数据的预期结果会有所帮助。如果您有 5 条 A>10 的记录和 7 条 B>5 的记录,您希望 A 在其余两行中是什么?
  • 它应该是空白但没有 null ,当我得到值时,它不应该在剩余的行中返回任何内容

标签: mysql sql


【解决方案1】:

如果 Daniel Cook 的版本适合您,除了您想要空值而不是空值,这是一个简单的更改:

select      case when a > 10 then a else '' end as a,
            case when b > 5 then b else '' end as b,
            case when c > 100 then a else '' end as c
from        test

SQLFidde:http://sqlfiddle.com/#!9/4c167/2

【讨论】:

  • 这带来了应用所有三个条件的值,但我想要 A 只有 A 条件,B 和 B 等 C,感谢您的努力
  • 如果您发布示例数据和预期结果会有所帮助。目前尚不清楚您对结果的确切期望。
  • 更新问题请看
【解决方案2】:
select      case when a > 10 then a else null end as a,
            case when b > 5 then b else null end as b,
            case when c > 100 then a else null end as c
from        table

【讨论】:

  • 我已经更新了问题,请回复。我已经使查询正常工作,但我不会在您的示例中避免空值,空值将在那里。感谢您的努力
猜你喜欢
  • 1970-01-01
  • 2020-03-27
  • 2021-09-09
  • 2014-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-17
相关资源
最近更新 更多