Oracle DB 视图将列数值显示为文本相对值

Posted

技术标签:

【中文标题】Oracle DB 视图将列数值显示为文本相对值【英文标题】:Oracle DB view to display columns numeric value to text relative values 【发布时间】:2014-04-30 16:29:52 【问题描述】:

问题的主题可能与我在这里的疑问无关。

我正在尝试创建一个从 Db 表中读取值的视图,其中在其中一列中我的值为 1、2、3,实际上代表 1=请求、2=响应和 3=错误。

我将使用此视图进行报告,因此在报告中我不想显示数字值,代替这些,我应该得到请求、响应或错误。

你能帮我如何创建一个视图来做到这一点..

提前感谢,因为我对数据库查询不太熟悉。

【问题讨论】:

CREATE VIEW blah AS SELECT CASE WHEN col=1 THEN 'request' WHEN col=2 THEN 'response' WHEN col=3 THEN 'error' END FROM table 您确定没有包含这些描述的表格吗?当这些值发生变化时,硬编码值和描述可能会很痛苦 谢谢,我正在尝试按照您的建议起草我的查询,但由于某种原因它无法正常工作。我还有一些其他列,我还需要与此列一起显示...但这些是正常的选择一个..您能否发布一个显示多个列以及上述请求查询的查询 【参考方案1】:

这是一个使用 CASE 语句的示例。

WITH test_data
     AS (SELECT 1 v1 FROM DUAL
         UNION
         SELECT 2 v1 FROM DUAL
         UNION
         SELECT 3 v1 FROM DUAL)
SELECT CASE v1
          WHEN 1 THEN 'request'
          WHEN 2 THEN 'response'
          WHEN 3 THEN 'error'
       END
  FROM test_data

所以视图看起来像:

CREATE VIEW MyView AS
 SELECT CASE v1
              WHEN 1 THEN 'request'
              WHEN 2 THEN 'response'
              WHEN 3 THEN 'error'
           END
      FROM test_data;  -- etc.

但是,我认为您应该创建一个单独的查找/连接表来映射内部值和用户值,而不是这种方法。当您需要为代码 #4 等添加案例时会发生什么?您不想每次都修改查询。着眼长远。

【讨论】:

以上是关于Oracle DB 视图将列数值显示为文本相对值的主要内容,如果未能解决你的问题,请参考以下文章

MSSQL:如何创建将列显示为逗号分隔值的视图 [重复]

Oracle SQL-将列转换为行,同时保留一列

oracle 10g如何将列转换为行

移动端基础知识技巧总结

干货移动端基础知识技巧总结

将列转换为行