日期:2014-05-19  浏览次数:20812 次

关于group by,求一条sql语句
表中两个字段ap1     ap2
比如:     ap1       ap2
            1       a           b
            2       a           a
            3       b           a
我想group   by的时候把不考虑a,b在ap1和ap2的顺序,把1和3分到一组怎么办?

------解决方案--------------------
select decode(sign(ascii(ap1)-ascii(ap2)),-1,ap1||ap2,ap2||ap1) value,count(*) from test
group by ap1,ap2
比较和排序可以,不过最后结果是这样了
ab 1
ab 1
aa 1
------解决方案--------------------
SELECT COUNT(*),ap1,ap2 FROM (SELECT
'ap1 '= 'A '
, 'ap2 '=
CASE WHEN CODE <> NAME THEN 'B '
ELSE 'A '
END
FROM #TEMP ) AS A GROUP BY ap1,ap2
------解决方案--------------------
试试这个
select c1,c2,count(*)
from table where str(c1)+str(c2) like 'ab ' or str(c1)+str(c2) like 'ba '
group by c1,c2
你把相应的列名换成你自己的列,当然其中的字段内容你也得改一下.