使用SQL Server 2008,以及这个完全虚构的场景和数据,我该如何转置这个(不完整的)数据库表?
决赛桌应该包含城市中的每个城镇以及与该城镇相关的每个(不同)动物的组合。
我一直在考虑一个支点,但找不到可以解决这一特定问题的解决方案。
我希望了解这个概念,所以我可以将这项技术应用到我的实际数据中,这有点复杂。
答案 0 :(得分:1)
你需要的解决方案是CROSS将表格连接三次,然后过滤出双打和三元组。
您可以查看this fiddle
代码是:
SELECT T1.Country,
T1.Town,
T1.Pet AS Pet1,
T2.Pet AS Pet2,
T3.Pet AS Pet3
FROM Pets T1
CROSS JOIN Pets T2
CROSS JOIN Pets T3
WHERE T1.Pet <> T2.Pet
AND T2.Pet <> T3.Pet
AND T1.Pet <> T3.Pet
AND T1.Country = T2.Country
AND T1.Country = T3.Country
AND T1.Town = T2.Town
AND T1.Town = T3.Town