我有一个包含 foo、bar 和 baz 列的表,其中 foo 为 bar 中的每个条目重复一次,每个 bar 中的 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
实际上,该表具有数百万个条目。我正在寻找两个不同的 foo 条目具有匹配的 bar+baz 条目的情况(例如,它会在上面找到 foo 1 和 foo 2,因为它们都beta
在它们的 bar 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 for this line”的方法。我只是在这里追逐一个不可能的想法吗?另一种方法是使用外部应用程序来运行许多较小的查询并以这种方式存储数据,但这是我的计划,如果它不能完全在 sql server 中完成。