Уникальные строки SQL из одной таблицы - PullRequest
1 голос
/ 29 марта 2012

Вот мой стол:

family  symbol
1   A
1   B
1   C
2   D
2   F
2   E

Результат, который я хочу получить, состоит из 2 строк: 1, A, B, C и 2, D, E, F. Заказ не имеет значения.

Это:

SELECT T.family, T.symbol,T1.Symbol, T2.symbol
From T
    inner join T as T1 on T.family = T1.family
    inner join T as T2 on T.family = T2.family
WHERE T.symbol <> T1.symbol
    AND T.symbol <> T2.symbol
    AND T1.symbol <> T2.symbol

дает это:

family  symbol  Symbol  symbol
1   A   C   B
1   A   B   C
1   B   C   A
1   B   A   C
1   C   B   A
1   C   A   B
2   D   E   F
2   D   F   E
2   F   E   D
2   F   D   E
2   E   F   D
2   E   D   F

Фактическая таблица имеет несколько значений семейства, каждое из которых содержит переменное количество символов.

Ответы [ 3 ]

0 голосов
/ 29 марта 2012

Попробуйте:

select family, group_concat(symbol separator ',')
  from T
 group by family

Это не точно , что вы хотите, но, возможно, это достаточно близко.Он объединит все различные символы для каждого семейства в один столбец .Запрос прост, и вам не нужно использовать OLAP или любую другую сложную конструкцию SQL.

0 голосов
/ 30 марта 2012

Существует полная реализация GROUP_CONCAT для Informix в Отображение отношения один ко многим в виде 2 столбцов - 1 уникальная строка (список с идентификатором и запятыми) . Это, безусловно, будет обрабатывать данные, которые вы показываете.

0 голосов
/ 29 марта 2012

То, что вы ищете, это сводная таблица. Взгляните на

http://msdn.microsoft.com/en-us/library/ms177410.aspx

Посмотрите, сможете ли вы применить свою логику к центру, и это должно дать вам желаемые результаты.

...