【发布时间】:2017-12-04 20:29:37
【问题描述】:
我有两张桌子
[Table_1] - 以特定货币表示的金额。
Currency | Amount
USD | 243
USD | 212
USD | 432
EUR | 578
EUR | 112
EUR | 578
GBP | 965
GBP | 309
和 [Table_2] - 欧元和英镑对美元的汇率
Cur | FX
GBP | 1.43
EUR | 1.18
USD | 1
我需要将一个新列 [Amount in USD] 永久添加到 [Table_1] 中,它将所有货币转换为美元。基本上我需要将相应的货币乘以[Table_2]中给出的汇率。最终结果应该是这样的。
Currency | Amount |Amount in USD
USD | 243 | 243
USD | 212 | 212
USD | 432 | 432
EUR | 578 | 682
EUR | 112 | 132
EUR | 578 | 682
GBP | 965 | 1380
GBP | 309 | 442
如果有人可以提供帮助,我将不胜感激。提前致谢。
【问题讨论】:
-
不使用计算列,使用
VIEW怎么样? -
不确定,我从未使用过 VIEW。我的真实数据库有大约 1000 万行,我需要在进一步的计算中使用计算列。这也适用于 VIEW 吗?
-
是的,引用MS Docs:视图是一个虚拟表,其内容由查询定义。与表一样,视图由一组命名的列和数据行组成。除非被索引,否则视图不会作为存储在数据库中的一组数据值存在。数据的行和列来自定义视图的查询中引用的表,并在引用视图时动态生成。因此您可以像查询普通表一样查询它。请查看下面我的解决方案,了解如何创建视图或计算列。
-
代码有效,但是当我检查解决方案时,视图表仅显示计算列。我的实际数据库有 28 列,所有这些都需要可见。
-
您的示例数据仅包含 3 列,所以这就是您得到的 :)。如果您需要更多列,则需要将它们添加到视图 DDL。我无权访问你的系统,所以我不知道你有更多的列。但是,如果您对特定解决方案有疑问,请评论答案,而不是您的问题。
标签: sql-server multiplication calculated-columns