2010-05-11 2 views
1

!!! ПРЕДУПРЕЖДЕНИЕ !!!Лучший способ сортировки n-конкатената 5 столбцов

Уважаемый эксперт SQL, пожалуйста, продолжайте читать, прежде чем начинать кричать. Эта структура с денормализованной сетью составляет , полученную после применения некоторых комбинаций комбинаций на хорошо нормализованном набор данных:). Я избегаю перенормировать этот набор результатов, потому что I хочу сохранить простой процесс (также эти данные не будут использоваться в другом месте приложения). (Да, Кодд. Я знаю, о чем вы думаете).


Имея пять столбцов, содержащих числовые значения

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 

Что это лучший способ сделать это ?

+5

Я не понимаю. Сортировка в SQL выполняется по строке. Вы действительно пытаетесь * сортировать столбцы *? Потому что это признак серьезного недостатка дизайна. – Aaronaught

+0

Вы можете написать сортировку по 5 столбцам в абсурдном наборе операторов CASE ... но я согласен с @Aaronaught. – derobert

+0

@AaronNaught Эта структура таблицы получается после применения некоторых комбинаториев-сахара по нормированному набору данных:). Я избегаю перенормировки этого набора результатов, потому что хочу сохранить простой процесс (также эти данные не будут использоваться в другом месте приложения:) – SDReyes

ответ

3

Глядя мимо серьезные вопросы о том, почему вы должны сделать это, это может быть достигнуто, хотя неловко:

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 

Очевидно, что базы данных никогда не были предназначены для сортировки по столбцам поэтому решение громоздко достичь.

+0

Привет, Томас! да, я согласен. это не ортодоксальный. но это просто, чтобы комбинаторные процессы были простыми (не будет пытаться дома) :) +1 – SDReyes

Смежные вопросы