在表格中我们有学校的数据:
ID | Name | City
------------------
1 A X
2 B X
3 C Z
4 D Z
我想要同一城市的每两所学校的列表:
Name1 | Name2
--------------
A B
C D
我选择的是同城的学校:
SELECT Name FROM Schools
Group by City
Having City = City
正确吗?如何将 2 所匹配的学校放在一张新 table 上并排?
谢谢
最佳答案
更新另一种方法
如果您坚持分组,可以这样做的一种方法
SELECT City,
MIN(Name) Name1,
MAX(Name) Name2
FROM Schools
GROUP BY City
-- HAVING COUNT(*) > 1
另一种方式
SELECT City,
MIN(CASE WHEN rnum = 1 THEN Name END) Name1,
MIN(CASE WHEN rnum = 2 THEN Name END) Name2
FROM
(
SELECT s.*, ROW_NUMBER() OVER (PARTITION BY City ORDER BY Name) rnum
FROM Schools s
) q
GROUP BY City
示例输出:
| CITY | NAME1 | NAME2 | ------------------------ | X | A | B | | Z | C | D |
这里是SQLFiddle 演示
关于sql - 选择已分组的 2 条记录,然后将它们并排放置在 2 列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18219618/