如何在SQL表中对数据进行分组以显示每个组合?

时间:2013-08-09 15:45:15

标签: sql sql-server-2008 tsql

使用SQL Server 2008,以及这个完全虚构的场景和数据,我该如何转置这个(不完整的)数据库表?

(incomo

决赛桌应该包含城市中的每个城镇以及与该城镇相关的每个(不同)动物的组合。

enter image description here

我一直在考虑一个支点,但找不到可以解决这一特定问题的解决方案。

我希望了解这个概念,所以我可以将这项技术应用到我的实际数据中,这有点复杂。

1 个答案:

答案 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