获取合同的最新数据

时间:2013-12-14 08:36:36

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

我想从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'不存在

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

2 个答案:

答案 0 :(得分:0)

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

GROUP BY  contract_balance.cid

答案 1 :(得分:0)

试试这个:

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