同じ行を2行ずつ出力するクエリ

 そもそも同じ内容の行を複数出力するクエリが必要かどうかというのは疑問の残るところですし、「2つの行をもつダミーテーブルを作ってクエリデザイン上に置く(結合線はひかない)」という簡単な答えがすぐに出てしまうところです。
 ただ、それだけのためにテーブルを作るというのもなんですので、SQLでなんとかする方法を示します。

 このようなテーブルをもとにして、同じ行を2つずつ出力させるものとします。


f:id:accs2014:20170225123633p:plain:right:w400

 方法の一つはユニオンクエリです。SQLがわからなくともデザインビューでクエリを作り、SQLビューの内容をコピーしてUNION ALL句でつなげば間違いありません(右の例ではORDER BY句も加えています。下記の画像からわかるように、このORDER BYはユニオンクエリ全体に適用されます)。


f:id:accs2014:20170225123632p:plain:right:w300

 データシートビューです。元のテーブルの内容が2行ずつ出力されています。
 なお、当然ですがSELECT文を3回以上繰り返せばその数だけ同じ行を出力できます。


 もう1つの方法としてSELECT TOP句の利用があります。既存のテーブルからSELECT TOP 2 〜により2行を抽出するサブクエリを作りFROM句に突っ込んでしまえばよいのです(右画像中「,(SELECT TOP 2 商品コード FROM 商品テーブル) AS ダミー」の部分)。


 データシートビューです。


 どちらの方法も、複数のテーブルを結合する複雑なSQLに適用できます。右の画像は基本的にデザインビューで得られたSQLですが、FROM句の次の「(SELECT TOP 2 取引先コード FROM 取引先テーブル) AS ダミー,」を手動で加えています。


 データシートビューです。