单表中的SQL Unique行

时间:2012-03-29 19:17:51

标签: sql informix

这是我的表:

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 :(得分:0)

您正在寻找的是数据透视表。看看

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

看看你是否可以将你的逻辑应用于一个支点,并且应该给你想要的结果。

答案 1 :(得分:0)

试试这个:

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

它不是完全你想要的东西,但也许它足够接近。它会将每个族的所有不同符号连接成单列。查询很简单,您不需要使用OLAP或任何其他复杂的SQL构造。

答案 2 :(得分:0)

Show a one to many relationship as 2 columns - 1 unique row (ID & comma separated list)中有针对Informix的GROUP_CONCAT的完整实现。它肯定会处理你显示的数据。