【问题标题】:Create mysql-view with parameter使用参数创建 mysql-view
【发布时间】:2013-10-03 06:28:34
【问题描述】:

这是我的第一张桌子t1

-----------------------------
| code | month      | value |
-----------------------------
| 101  |august      | 1     |
| 101  |September   | 3     |
| 101  |November    | 7     |
| 202  |august      | 5     |
| 202  |September   | 6     |
| 202  |November    | 9     |
| 303  |august      | 9     |
| 303  |September   | 3     |
-----------------------------

我要创建第二个表t2(查看表)的样子

------------------------------------------
| code | month      | value | value_begin |
------------------------------------------
| 101  |august      | 1     |0            |
| 101  |September   | 3     |1            |
| 101  |November    | 7     |4 (3+1)      |
| 202  |august      | 5     |0            |
| 202  |September   | 6     |5            |
| 202  |November    | 2     |11 (6+5)     |
| 303  |august      | 9     |0            |
| 303  |september   | 3     |9            |
-------------------------------------------

value_begin 是行上方的总和值和 value_begin,例如在第 101 行 - 11 月 value_begin 是值 3(上方)和 value_begin 1(上方)的 4。

这是否可以在视图中创建第二个表 t2?

【问题讨论】:

    标签: mysql view parameters


    【解决方案1】:

    Here is the SQLFIddel Demo

    以下是演示中的视图:

    Create View V1 as
    select T1.code,T1.Month,T1.Value,
           sum(IFNULL(T2.value,0)) as value_begin
      from Table1 T1
     left join Table1 T2
        On T1.code = T2.code 
       and month(str_to_date(substring(T1.month,1,3),'%b')) > month(str_to_date(substring(T2.month,1,3),'%b'))
    Group by T1.code,T1.Month,T1.Value 
    Order by t1.code,month(str_to_date(substring(T1.month,1,3),'%b'))
    ;
    

    不允许添加变量,因此我以前的方法没有帮助。而且您需要考虑变量,这也是不可能的。在这里,我使用了您的表格的逻辑来克服这种情况。希望这可以帮助。如果有任何疑问,请回复。


    注意:我在演示中添加了几行来检查计算验证。

    【讨论】:

    • 我认为子查询不适用于 mysql-view。不过还是谢谢
    • @StefanusDaniel:我修改了我的解决方案。检查它并让我知道它是否不起作用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-10
    • 1970-01-01
    • 2019-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-26
    相关资源
    最近更新 更多