SQL将左连接与其间的组合

时间:2016-11-30 12:40:10

标签: sql left-join between

我有两个完美的查询。

SELECT fy.date_stop as pend
FROM account_fiscalyear fy
WHERE <any date> BETWEEN fy.date_start AND fy.date_stop

这将返回可以找到的会计年度的最后日期。

SELECT a.id as id, COALESCE(MAX(l.date),a.purchase_date) AS date
FROM account_asset_asset a
LEFT JOIN account_move_line l ON (l.asset_id = a.id)
WHERE a.id <some condition>
GROUP BY a.id, a.purchase_date

这将返回类似于以下内容的结果,给出资产的资产ID和购买日期或最后折旧日期。

61  2014-09-01
96  2014-09-01
115 2015-02-25
181 2015-11-27
122 2015-04-03
87  2014-09-01
67  2014-09-01
207 2016-09-09
54  2014-09-01
159 2015-08-25
163 2015-08-19
....

我想要的结果是资产ID,但这次是在财政年度的最后一天,可以找到购买日期或上次折旧日期。我似乎无法找到方法合并这两个查询。

解决了它。

SELECT a.id as id, COALESCE(MAX(l.date), a.purchase_date) as date
FROM
(SELECT ass.id as id, fy.date_stop as purchase_date
FROM account_fiscalyear fy, account_asset_asset ass
WHERE ass.purchase_date BETWEEN fy.date_start AND fy.date_stop) a
LEFT JOIN
(SELECT mvl.asset_id as asset_id, fy.date_stop as date
FROM account_move_line mvl, account_period per, account_fiscalyear fy
WHERE mvl.period_id = per.id AND per.fiscalyear_id = fy.id) l
ON (l.asset_id = a.id)
GROUP BY a.id, a.purchase_date

0 个答案:

没有答案