私は請求システムを持っており、時間を過ごしてレポートを生成しようとしています。私は注文の変更のすべてのインスタンスを保存しているので、すべての請求書のほぼすべてのアイテムに対して複数のエントリがあります。このため、私は古い変更を除外し、最新のものだけを使用しようとしています。最新の作成日をグループ明細書で使用します
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
をしかし、この作成日は考慮されません。
結果を注文しても、group byステートメントには影響しません。私は同様の投稿をチェックしましたが、見つかったのは2つのみで、作成日数が最も高い順に並べ替えるか、複数の列で結果をグループ化していません。
あなたが使用しているクエリの結果を投稿することができます動作しますか? – Bdloul
'SELECT *'は 'GROUP BY'クエリの有効な' SELECT'節ではありません。 'GROUP BY'クエリはテーブルから行を返しません** **レコードセットに置く行を即座に**生成します。生成された行ごとに、クエリから抽出された行のグループを使用します。グループ内の 'id'には複数の値があります(' id'は 'GROUP BY'節にないので)、' SELECT'節の 'id'があいまいです。 'GROUP BY'クエリ**はあなたの質問に対する解決策ではありません。 – axiac
@axiacこれは、氷山の先端の一種です。 –