0

結合といくつかの条件によって作成された次のテーブルがあります。

product_id     date
11111          2012-06-05
11111          2012-05-01
22222          2011-05-01
22222          2011-07-02
33333          2011-01-01

製品ごとの最新の日付を含む結果セットが得られるように行を取得しようとしています:

GOAL

product_id     date
11111          2012-06-05
22222          2011-07-02
33333          2011-01-01  

データをそのまま抽出して手動でソートすることもできますが、そうはしません。単一の行のみを返さずに SELECT MAX() を実行する方法を見つけることができないようです。製品 ID ごとにクエリを実行したくありません。

テーブルは次のクエリによって生成されます。

SELECT item_id, sales_price, item, description, transaction_date 
FROM db.invoice_line AS t1 INNER JOIN db.invoices AS t2 
ON t1.invoice_id = t2.id_invoices WHERE item IS NOT NULL 
AND item_id != '800001E9-1325703142' AND item_id != '800002C3-1326830147' 
AND invoice_id IN 
    (SELECT id_invoices FROM db.invoices 
       WHERE customer_id = '[variable customer id]' 
       AND transaction_date >= DATE_SUB(NOW(), INTERVAL 360 DAY));

結合を使用して日付列を「追加」します。あとは無駄なものは無視して、一年前から現在までの特定の顧客からの請求書の中から選びます。

ご指導ありがとうございます。

デーン

4

1 に答える 1

3

group by法案に合うように見えます:

select  product_id
,       max(date)
from    YourTable
group by
        product_id
于 2012-06-07T17:10:58.377 に答える