各位大神求帮忙哇,我有个关于sql语句的问题一直想不出来怎么查询: 查询的时候我希望查询可以分组,但不同于group by A,B,我想让 column='x' 的列和 column=‘y’ 的列中的内容不按顺序的进行分组。举个例子:
假设我有一张messages表:

然后我想让其按下面的方式分组:

请教各位大神,我该怎么写sql语句?
谢谢啦!
------解决思路----------------------
-- 凑个热闹
SQL>
SQL> create table messages(msgid int ,msgfrom varchar(10) , msgto varchar(10));
Table created
SQL> begin
2 insert into messages values(1,'A','B');
3 insert into messages values(2,'A','C');
4 insert into messages values(3,'C','D');
5 insert into messages values(4,'B','A');
6 insert into messages values(5,'D','C');
7 end ;
8 /
PL/SQL procedure successfully completed
SQL> select t.* from messages t ;
MSGID MSGFROM MSGTO
--------------------------------------- ---------- ----------
1 A B
2 A C
3 C D
4 B A
5 D C
SQL> select t.* ,
2 dense_rank() over(order by least(t.msgfrom , t.msgto) , greatest(t.msgfrom , t.msgto)) groupid
3 from messages t
4 order by groupid , t.msgfrom;
MSGID MSGFROM MSGTO GROUPID
--------------------------------------- ---------- ---------- ----------
1 A B 1
4 B A 1
2 A C 2
3 C D 3
5 D C 3
SQL> drop table messages purge ;
Table dropped
SQL>