【问题标题】:How to create view with joining non-index value如何使用加入非索引值创建视图
【发布时间】:2020-07-21 03:08:58
【问题描述】:

我的表 tcmcs008 为:

curr|excb|rate|rapr
USD |1   |0.77|2
AUD |1   |0.68|1
INR |2   |1   |1
:
:

索引是当前的。 还有另一个表,其中包含不同表的枚举字段描述:

tabl    |fild|valu|dscr
tcmcs008|excb|1   |Yes
tcmcs008|excb|2   |No
tcmcs008|rapr|1   |Yes
tcmcs008|rapr|2   |No
tcibd001|type|1   |Purchase Item
tcibd001|type|2   |Cost Item
tcibd001|type|3   |Manufactured item
:
:

索引是表|fild|value

我想为 tcibd008(以及其他表)创建一个视图,例如:

curr|excb  |rate|rapr
USD |Yes   |0.77|No
AUD |Yes   |0.68|Yes
INR |No    |1   |Yes
:
:

我可以通过硬编码来做到这一点:

CREATE OR ALTER VIEW A_tcmcs008060 As 
SELECT t.ccur, 
       CASE WHEN t.excb = 1 THEN 'Yes'
            ELSE 'No'
       END, 
       rate,
       CASE WHEN t.rapr = 1 THEN 'Yes'
            ELSE 'No'
       END
FROM ttcmcs008060 t

任何人都可以使用表连接或任何其他方式来帮助实现这一目标吗?

【问题讨论】:

  • 用您正在使用的数据库标记您的问题。

标签: sql sql-server join view


【解决方案1】:

你可以使用join:

CREATE OR ALTER VIEW A_tcmcs008060 As 
    SELECT t.ccur, e.dscr, t.rate
    FROM ttcmcs008060 t LEFT JOIN
         enums e
         ON t.excb = e.valu and e.fild = 'excb';

【讨论】:

  • 谢谢戈登。但是“excb”仍然是硬编码的。另一件事是对于一个表可以有多个枚举字段。我在这里显示的查询只是为了举例。实际上,我们可能需要所有这些。
  • 即使我们像 e.fild = 'excb' 那样进行硬编码,如何获得 excb 和 rapr 的 dscr?
  • @sweenal 。 . .您评论中的问题应作为问题提出,并附有样本数据和所需结果。不清楚你想要什么结果。
猜你喜欢
  • 1970-01-01
  • 2011-08-13
  • 2011-02-15
  • 2011-08-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多