0

次のような構造のテーブルがあります。

date    name    marks
x       a       4
y       a       2
x       b       2
y       b       7
x       c       8
y       c       6
x       d       9
y       d       6

すべての行の結合を行いたいのですが、結合を実行するときに同じものnameを使用する必要があります。出力は次のようになります。

date    name    marks   x.date  x.name  x.marks
x       a       4       x       b       2   # a & b
y       a       2       y       b       7
x       a       4       x       c       8   # a & c
y       a       2       y       c       6
x       a       4       x       d       9   # a & d
y       a       2       y       d       6
x       b       2       x       d       9   # b & c
y       b       7       y       d       6
x       b       2       x       c       8   # b & d
y       b       7       y       c       6
x       c       8       x       d       9   # c & d
y       c       6       y       d       6

クロス結合、グループ化などのさまざまなアイデアにうんざりしていますが、すべて無駄です。何か助けはありますか?

4

1 に答える 1

1
Select a.date adate, a.name aname, a.marks amark, 
x.date xdate, x.name xname, x.marks xmarks
FROM A a, a x 
where A.name < x.Name and a.date = x.date
order by aname, xname, adate, xdate

これは、動作するデモのフィドルです。 http://sqlfiddle.com/#!2/105f0/19/0

しかし、将来的にはあなたの作品を見せてください。人々があなたを正しい方向に向けられるように、試したクエリを投稿してください。

ここでの秘訣は、a.date と x.dates が一致する場合に限り、< x.name である A.name が 2 つ必要になることです。したがって、クロス結合が必要ですが、単に <> または = を使用したくありません

于 2013-07-10T21:21:12.377 に答える