请参阅下面的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可能的,但我不确定。
答案 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
这样的对被视为相同。