我有一個發票系統,並且正在嘗試生成關於花費小時數的報告。我將訂單的每個更改都保存下來,因此每個發票上幾乎每個項目都有多個條目。由於這個原因,我正在過濾舊的更改,並試圖只使用最新的更改。使用組中最近的創建日期
共享一個project_id,phase_id和同一weekstart的每個實例都是發票上的相同項目。我想生成報告,只抓取這些項目的最新版本。
示例表:
id project_id phase_id weekstart created
---------------------------------------------------------------
1 6 apple 2017-04-20 2017-04-23
2 6 apple 2017-04-20 2017-04-24
3 8 banana 2017-04-20 2017-04-23
4 9 pear 2017-04-20 2017-04-23
5 9 pear 2017-04-20 2017-04-25
我希望能夠運行一個查詢來獲取:
id project_id phase_id weekstart created
---------------------------------------------------------------
2 6 apple 2017-04-20 2017-04-24
3 8 banana 2017-04-20 2017-04-23
5 9 pear 2017-04-20 2017-04-25
目前我使用類似:
SELECT * from invoiceitems where employee_id = 10
group by project_id, phase_id, weekstart
但這沒有考慮到創建日期。
對結果排序並不會影響組合語句。我檢查過類似的帖子,但只有兩個我發現完全按照最高創建日期排序,或者沒有將結果按多列分組。
你可以發佈你正在使用的查詢的結果? – Bdloul
'SELECT *'在「GROUP BY」查詢中不是有效的「SELECT」子句。 「GROUP BY」查詢不會返回表中的行,它會隨時將其放置在記錄集上的行生成**;對於每個生成的行,它使用從查詢中提取的一組行。組中有'id'的多個值(因爲'id'不在'GROUP BY'子句中),這就是爲什麼'SELECT'子句中的'id'不明確的原因。 「GROUP BY」查詢**不是您問題的解決方案。 – axiac
@axiac這就是冰山一角。 –