質問: SQLでTABLE_A(ORACLEのテーブル)からTABLE_Bを作成することは可能でしょうか?可能であれば、どのようなSQL文を作成すればいいか、教えていただけないでしょうか?
回答: 先に確認しておきたいことが3点あります。 (その1)データベース製品について 知恵袋のカテゴリがSQL Server ですが、データベースはORACLEですね。 (その2)TABLE_B の項目について TABLE_Bの仕様から考えると、「購入日時」の項目とは別に「購入日」があってもいいように思えますが、不要ということですね。 (その3)TABLE_B はテーブルとして定義する必要があるか TABLE_B をテーブルとして生成してしまうと、以降は、TABLE_Aとは別物としてメンテナンスが必要になります。 もしも、「普段はTABLE_Aをメンテナンスしていて、TABLE_Bの形式で随時表示できればいい」 ということであれば、TABLE_Bはテーブルにしない方が便利です。 一応、ここではテーブルとして生成するものとします。 CREATE TABLE TABLE_B (購入者, 購入日時1, 購入品1, 購入日時2, 購入品2) AS SELECT R1.購入者, R1.購入日時, R1.購入品, R2.購入日時, R2.購入品 FROM ( SELECT 購入者, 購入日,購入日時, 購入品 FROM ( SELECT 購入者, TO_CHAR(購入日時,'YYYYMMDD') 購入日 ,購入日時, 購入品 ,ROW_NUMBER() OVER (PARTITION BY 購入者, TO_CHAR(購入日時,'YYYYMMDD') ORDER BY 購入日時) RNUM FROM TABLE_A ) R WHERE R.RNUM=1 ) R1 LEFT JOIN ( SELECT 購入者, 購入日,購入日時, 購入品 FROM (SELECT 購入者, TO_CHAR(購入日時,'YYYYMMDD') 購入日 , 購入日時, 購入品 ,ROW_NUMBER() OVER (PARTITION BY 購入者, TO_CHAR(購入日時,'YYYYMMDD') ORDER BY 購入日時) AS RNUM FROM TABLE_A ) RR WHERE RR.RNUM=2 ) R2 ON R1.購入者=R2.購入者 AND R1.購入日=R2.購入日