代码之家  ›  专栏  ›  技术社区  ›  SDReyes

排序的最佳方法-n-连接5列

  •  1
  • SDReyes  · 技术社区  · 15 年前

    !!!!警告!!!!

    最亲爱的SQL专家,请继续阅读,然后开始尖叫。 这个超级非规范化的表结构是 涂抹后获得 将糖与良好归一化的 数据集:)。我躲避 重新规范化此结果集,因为我 想保持简单完整 处理(同样,此数据也不会被使用 在应用程序的另一个位置)。(是的,Codd。我知道你在想什么。


    包含数值的五列

     A | B | C | D | E
    -------------------
     2 | 3 | 4 | 1 | 5
     3 | 6 | 1 | 5 | 4
     4 | 5 | 7 | 1 | 3
    

    我希望在对值排序后获得这些值的串联:

       ABCDE
    -----------
     1 2 3 4 5
     1 3 4 5 6
     1 3 4 5 7
    

    最好的方法是什么?

    1 回复  |  直到 15 年前
        1
  •  3
  •   Thomas    15 年前

    回顾一下为什么你需要这样做的严重问题,这是可以实现的,尽管有些尴尬:

    Select ...
        , Stuff(
                (
                Select ' ' + Z.Col
                From    (
                        Select PKCol, A As Col From Table
                        Union All Select PKCol, B From Table
                        Union All Select PKCol, C From Table
                        Union All Select PKCol, D From Table
                        Union All Select PKCol, E From Table
                        ) As Z
                Where Z.PKCol = Table.PKCol
                Order By Col
                For Xml Path('')
                ), 1, 1, '') As Combined
    From Table
    

    显然,数据库从未被设计为跨列排序,这就是解决方案难以实现的原因。