分组考虑字段名称,反之亦然

时间:2015-11-27 16:05:09

标签: sql sql-server

请参阅下面的DDL:

create table #test (name1 varchar(100), name2 varchar(100))
insert into #test values ('Marie','ian')
insert into #test values ('Ian','Marie')

和下面的SQL:

select count(*) from #test group by name1,name2

这正确地返回到行:

1,
1

如何返回1行:

2

id1和id2是相反的,所以它们应该被视为一行。我相信这可能是CHECKSUM可能的,但我不确定。

1 个答案:

答案 0 :(得分:2)

尝试:

SELECT COUNT(*) 
FROM #test 
GROUP BY IIF(name1 >= name2, name1, name2), IIF(name1 < name2, name1, name2)

使用CASE语法(SQL Server 2008 R2或更早版本):

SELECT COUNT(*) 
FROM #test 
GROUP BY CASE WHEN name1 >= name2 THEN name1 ELSE name2 END, 
         CASE WHEN name1 < name2 THEN name1 ELSE name2 END

通过('Bob', 'Martin')子句,('Martin', 'Bob')GROUP BY这样的对被视为相同。