mysql - 我可以创建一个 View ,将每隔几行划分为不同的值吗?

标签 mysql view

本质上,我有一个表格,其中包含与货币 A 相关的每日货币兑换率,并且我想提供与货币 B 相关的汇率 View 。

除了自动递增 ID 之外,我的表还包含三列(具有关联类型):date (date)currency (varchar(3)) >conversion_rate(十进制(16, 6))。假设它看起来像这样:

| date       | currency | rate_to_A |
| 2014-11-22 | D        | 4.00000   |
| 2014-11-22 | B        | 0.50000   |
| 2014-11-21 | D        | 5.00000   |
| 2014-11-21 | B        | 0.25000   |

对于特定日期,我可以生成一个切换货币的选择查询:

SELECT date,
    currency, 
    (conversion_rate / (SELECT conversion_rate FROM currency_rates_to_A WHERE date='2014-11-20' AND currency='B')) AS rate_to_B 
FROM currency_rates_to_A 
WHERE date='2014-11-20';

但我需要的是一个可以对所有日期(即原始表中的所有数据)执行相同操作的 View 。类似于以下内容:

| date       | currency | rate_to_B |
| 2014-11-22 | D        | 8.00000   | -- 4.00000 / 0.50000
| 2014-11-22 | B        | 1.00000   | -- 0.50000 / 0.50000
| 2014-11-21 | D        | 20.00000  | -- 5.00000 / 0.25000
| 2014-11-22 | B        | 1.00000   | -- 0.25000 / 0.25000

问题在于,每一行都需要除以该日期的 B 汇率(该汇率具有相同的日期)以及 currency 列中的值“B”。

这可能吗?

最佳答案

您的查询非常接近。您只需将子查询更改为相关子查询即可:

SELECT cr.*, 
       (conversion_rate / (SELECT cr2.conversion_rate
                           FROM currency_rates_to_A cr2
                           WHERE cr2.date = cr.date AND currency = 'B'
                          )
         ) AS rate_to_B 
FROM currency_rates_to_A cr;

您还可以通过显式自连接来执行此操作:

SELECT cr.*, cr.conversion_rate / cr2.conversion_rate as rate_to_B
FROM currency_rates_to_A cr JOIN
     currency_rates_to_A cr2
     ON cr2.date = cr.date AND cr2.currency = 'B';

关于mysql - 我可以创建一个 View ,将每隔几行划分为不同的值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27043101/

相关文章:

mysql - 错误代码 : 1289. 'SHOW PROCEDURE|FUNCTION CODE' 功能已禁用;让它发挥作用

php - 如何在mysql中使用别名变量作为条件?

c# - MVC ASP.NET 中的 ViewData 和 ViewModel

java - 有没有办法观察 Arraylist 的大小,因为它通过数据绑定(bind)发生变化?

android - 没有延迟更新 View 时没有错误 "Only the original thread that created a view hierarchy can touch its views"

android - 如何以编程方式调整 View 的 z 顺序

android - 在多个膨胀布局中获取对同一 View 的引用

PHP 查询的空白响应返回特殊字符

php - 我可以隐藏表中具有特定或特殊值(例如零)的数据吗? PHP 和 MySQL

mysql - EclipseLink 可以创建 persistence.xml 中指定的数据库吗?