初回とはなにかという定義によります
- 同じ売上IDであれば全部初回なのか
- 最初のものだけが初回なのか
が、わかりません。SQLの場合レコードの順番というのはあてにならないので
後者の場合は別途順番を確定するためのカラムが必要です
- 商品名の「サンプル」という文字も末尾にしかつかないのか
- 先頭や途中にもつくのか
で、書き方がかわってきます
もしちゃんと管理したいなら、サンプルカラムをつくってそのon/offで
きちんとサンプルかどうか判別できるようにしたほうが効率的です
sample
アクセスと書式が違ったらうまく読み替えてください
SQL
1create table tbl(pid int primary key auto_increment,売上ID int,受注日 date,名前 varchar(20),商品名 varchar(30));
2insert into tbl(売上ID,受注日,名前,商品名) values
3(10001,'2019-05-01','鈴木','AAAAAサンプル'),
4(10001,'2019-05-01','鈴木','BBBBBBB'),
5(10002,'2019-05-05','佐藤','DDDDDDD'),
6(10003,'2019-06-12','井上','DDDDDDD'),
7(10003,'2019-06-12','井上','EEEEEサンプル'),
8(10004,'2019-07-10','田中','CCCCCサンプル'),
9(10004,'2019-07-10','田中','EEEEEサンプル'),
10(10004,'2019-07-10','田中','GGGGGGG'),
11(10005,'2019-07-10','吉田','HHHHサンプル'),
12(10011,'2019-05-11','鈴木','XXXXXX'),
13(10012,'2019-06-05','佐藤','YYYYYサンプル');
SQL
1select * from (
2select 売上ID,名前,sum(case when 商品名 LIKE '%サンプル%' then 1 else 0 end) as flg
3from tbl
4group by 売上ID,名前
5) as t1
6where not exists(
7select 売上ID,名前,sum(case when 商品名 LIKE '%サンプル%' then 1 else 0 end) as flg
8from tbl
9group by 売上ID,名前
10having 名前=t1.名前 and 売上ID<t1.売上ID
11)
12and flg>0
SQL
1select * from (
2select 売上ID,名前,sum(case when NOT 商品名 LIKE '%サンプル%' then 1 else 0 end) as flg
3from tbl
4group by 売上ID,名前
5) as t1
6where not exists(
7select 売上ID,名前,sum(case when NOT 商品名 LIKE '%サンプル%' then 1 else 0 end) as flg
8from tbl
9group by 売上ID,名前
10having 名前=t1.名前 and 売上ID<t1.売上ID
11)
12and flg>0
13
ちょっと意味がわからない