【问题标题】:Get last data for contracts获取合约的最后数据
【发布时间】:2014-01-02 02:11:31
【问题描述】:

我想从 MySQL 的数据库中选择有关客户余额的最新信息。我写了下一个脚本:

    SELECT *
FROM
    (SELECT        
                    contract_balance.cid,
                    /*contract_balance.yy,
                    contract_balance.mm,*/
                    contract_balance.expenses, 
                    contract_balance.revenues, 
                    contract_balance.expenses + contract_balance.revenues AS total,
                    (CAST(CAST(CONCAT(contract_balance.yy,'-',contract_balance.mm,'-01')AS CHAR) AS DATE)) AS dt
            FROM contract_balance

            /*WHERE                 
                CAST(CAST(CONCAT(contract_balance.yy,'-',contract_balance.mm,'-01')AS CHAR) AS DATE) < '2013-11-01'
            LIMIT 100*/

    ) AS tmp
    WHERE tmp.dt = (
                        SELECT MAX(b.dt)
                        FROM tmp AS b
                        WHERE tmp.cid = b.cid      
                    )

但是服务器返回:

表“clientsdatabase.tmp”不存在

如何更改此代码以获取所需数据?

【问题讨论】:

    标签: mysql sql select group-by groupwise-maximum


    【解决方案1】:

    在你的子查询中尝试这个你试图获得(CAST(CAST(CONCAT(contract_balance.yy,'-',contract_balance.mm,'-01')AS CHAR) AS DATE)) AS dtMAX 但在子查询中你的别名表tmp 不存在所以你可以做的最简单的方法是计算MAX dt 并使用 GROUP BY contract_balance.cid 承包商 ID,我想它会满足您的需求

    SELECT        
    contract_balance.cid,
    contract_balance.expenses, 
    contract_balance.revenues, 
    contract_balance.expenses + contract_balance.revenues AS total,
    MAX((CAST(CAST(CONCAT(contract_balance.yy,'-',contract_balance.mm,'-01')AS CHAR) AS DATE))) AS dt
    FROM contract_balance
    GROUP BY  contract_balance.cid
    

    【讨论】:

      【解决方案2】:

      试试这个:

      SELECT * 
      FROM (SELECT cb.cid, cb.expenses, cb.revenues, cb.expenses + cb.revenues AS total, 
                  (CAST(CAST(CONCAT(cb.yy,'-',cb.mm,'-01')AS CHAR) AS DATE)) AS dt
            FROM contract_balance cb ORDER BY dt DESC
           ) AS A 
      GROUP BY A.cid
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-07-10
        • 2021-11-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-08-12
        • 2023-02-24
        • 1970-01-01
        相关资源
        最近更新 更多