67103


製造商品に関わる２つのテーブルがあります

transaction as A

[code]

    productID, GroupID, Date
    3333,12,2020-01-01 00:00:00
    
[/code]

product as B

[code]

    productID, title
    4444,namae
    
[/code]

期待する結果

[code]

    productID, Date, title
    4444,2020-01-01 00:00:00, namae
    
[/code]

この時、transactionのテーブルには販売された全レコードが入っているので、  
全てを取得するのではなく、それぞれのproductIDの最も古いDateのデータだけが欲しいです。  
(1行にproductIDはユニークの一つだけにしたい）

現状作成したコードは以下なのですが、これだと上記の通り全レコードが入ってしまうので、困っております。  
お知恵をかしてください

[code]

    SELECT A.Date, A.productID, B.title
    
    From transaction as A
    JOIN
    product as B
    ON A.productID = B.productID
    
    WHERE
    A.GroupID = 12
    AND
    A.Date between '2020-01-01 00:00:00 and '2020-01-31 23:59:59'
    AND
    (
    B.title like 'hoge'
    or
    B.title like 'uma'
    or
    B.title like 'soba'
    )
    
[/code]


CC BY-SA 4.0
2020-05-28T11:42:39.620
67082
2020-05-29T00:31:46.507
23420
question
sql
重複行を削除しつつ、最も古い日付のデータを抽出する方法


where句の副問い合わせで最も古いデータに絞る方法はいかがでしょうか。  
(Oracleで動作を確認し、予約語DateはDatに書き換えています)

SQL:

[code]

    -- テーブル定義用
    with transaction as
         (select 3333 productID, 12 GroupID, to_date('2020-01-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS') Dat from dual union all
          select 4444 productID, 12 GroupID, to_date('2020-01-02 00:00:00', 'YYYY-MM-DD HH24:MI:SS') Dat from dual union all
          select 4444 productID, 12 GroupID, to_date('2020-01-03 00:00:00', 'YYYY-MM-DD HH24:MI:SS') Dat from dual union all
          select 5555 productID, 12 GroupID, to_date('2020-01-04 00:00:00', 'YYYY-MM-DD HH24:MI:SS') Dat from dual
         )
        ,product as
         (select 3333 productID, 'uma' title from dual union all
          select 4444 productID, 'namae' title from dual union all
          select 5555 productID, 'soba' title from dual
         )
    -- コードここから
    select A.Dat, A.productID, B.title
    from  transaction A
         ,product B
    where A.productID = B.productID
    and   B.title like '%ma%'
    -- 最も古いデータに絞る
    and   A.Dat = (select min(tmp.Dat) from transaction tmp where tmp.productID = A.productID)
    
[/code]

出力:

[code]

    DAT,PRODUCTID,TITLE
    2020/01/01,3333,uma
    2020/01/02,4444,namae
    
[/code]


CC BY-SA 4.0
2020-05-29T00:31:46.507
67103
2020-05-29T00:31:46.507
9820
67082
answer