列 foo、bar、および baz を含むテーブルがあります。ここで、foo は bar のエントリごとに 1 回繰り返され、各バーの baz に可能なエントリがあります。例として:
|-----|-----|-----|
| foo | bar | baz |
|-----|-----|-----|
| 1 | 1 |alpha|
| 1 | 2 |beta |
| 1 | 3 |gamma|
| 2 | 1 |delta|
| 2 | 2 |beta |
| 2 | 3 |kappa|
| 3 | 1 | |
| 3 | 2 | |
| 3 | 3 |iota |
|-----|-----|-----| etc
実際には、このテーブルには何百万ものエントリがあります。2 つの異なる foo エントリが一致する bar+baz エントリを持つ状況を探しています (たとえば、両方ともbeta
bar 2 にあるため、上記の foo 1 と foo 2 が見つかります)、特定の foo の範囲では、そうではありませんテーブル全体を見ています。
これが可能かどうかはわかりませんが、サブクエリのさまざまな順列はこれまでのところ機能していませんが、foo をリストするクエリを作成しようとしており、次の列は次のとおりです。baz where bar = x and foo = [the foo for the current row]
したがって、バー 2 とバー 3 を見ると、上の表は次のようになります。
|-----|-----|-----|
| foo |bar=2|bar=3|
|-----|-----|-----|
| 1 |beta |gamma|
| 2 |beta |kappa|
| 3 | |iota |
|-----|-----|-----|
私はSQLに比較的慣れていないため、これを行う特定の構文を認識していない可能性があり、Googleで検索することはできませんでした. 使ってみました
select foo, (baz where bar=2) as 'bar=2', (baz where bar=3) as 'bar=3' from....
まったく予想外ではありませんでしたが、良い結果にはなりませんでした。全選択クエリを列ヘッダーとして配置することを検討しましたが、「この行の foo」を参照する方法がわかりません。私はここで不可能なアイデアを追いかけているだけですか?別の方法は、外部アプリケーションを使用して多くの小さなクエリを実行し、代わりにその方法でデータを保存することですが、SQL サーバー内で完全に実行できない場合は、それが私の計画です。