• ベストアンサー

SQLについて教えてください

お世話になります。 SQLについて教えてください AテーブルとBテーブルからCテーブルを作成したいのですが、 KEYをキーにAテーブルのIDが1で、YYMMが一番新しい項目(最大の項目)を 取得し、Cテーブル作成したいのですが、どのようにするのでしょうか? Aテーブル    Bテーブル   Cテーブル KEY ID yymm   KEY     KEY YYMM AAA 0 200612  AAA     AAA 200611 AAA 1 200611  BBB     BBB 200611 AAA 1 200609 BBB 0 200611 CCC 1 200611

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

AテーブルのBBBのID値は、1の誤りでしょうか? そう仮定します。 なお、「KEY」は予約語のようなので、注意してください。 insert into C select XA."KEY",XA.yymm from (select "KEY",max(yymm) as yymm from A where ID=1 group by "KEY") as XA inner join B on XA."KEY"=B."KEY"

その他の回答 (2)

noname#26224
noname#26224
回答No.2

SELECT B.KEY, MAX(A.yymm) FROM B INNER JOIN A ON A.KEY = B.KEY AND A.ID = (SELECT MAX(x1.ID) FROM B x1 WHERE x1.KEY = A.KEY GROUP BY x1.KEY) 要は、IDの最大値を求めなければならないこと。 あっ、動作確認してないけど、やっている意味はわかりますよね? もっと解りやすくすると... SELECT A.KEY , MAX(A.ID) as ID INTO #AA FROM A INNER JOIN B ON B.KEY = A.KEY GROUP BY A.KEY SELECT A.KEY , MAX(A.yymm) as yymm FROM A INNER JOIN #AA aa ON aa.KEY = A.KEY AND aa.ID = A.ID GROUP BY A.KEY

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

実際に動作確認してないので、外してたらごめんなさい。 既にtbl_cがあるなら、最初の2行を insert into tbl_c as  select tbl_b.key, tbl_a2.yymm_max as yymm にしてみてください。 from句にselectがあるので奇異に感じるかと思いますが、 viewである、と理解してください。 create table tbl_c as  select tbl_b.key, tbl_a2.yymm_max  from tbl_b,   (   select tbl_a.key, max(tbl_a.yymm) as yymm_max   from tbl_a   where tbl_a.id=1   group by tbl_a.key   ) as tbl_a2  where tbl_b.key=tbl_a2.key ;

関連するQ&A