--drop table @temp
declare @temp table(tag smallint primary key)
insert into @temp(tag)
values(1)
insert into @temp(tag)
values(2)
insert into @temp(tag)
values(3)
insert into @temp(tag)
values(4)
insert into @temp(tag)
values(5)
insert into @temp(tag)
values(6)
insert into @temp(tag)
values(7)
insert into @temp(tag)
values(8)
insert into @temp(tag)
values(9)
insert into @temp(tag)
values(10)
--2 records
--Time 0 sec
If (select count(*) from @temp)=2
begin
select t1.tag as t1 ,t2.tag as t2 from @temp t1
cross join @temp t2
where t1.tag <> t2.tag
--order by t1.tag,t2.tag
end
--3 records
--Time 0 sec
If (select count(*) from @temp)=3
begin
select t1.tag as t1 ,t2.tag as t2, t3.tag as t3 from @temp t1
cross join @temp t2
cross join @temp t3
where t1.tag <> t2.tag
and t1.tag <> t3.tag
and t2.tag <> t3.tag
--order by t1.tag,t2.tag,t3.tag
end
--4 records
--Time 0 sec
If (select count(*) from @temp)=4
begin
select t1.tag as t1 ,t2.tag as t2, t3.tag as t3 ,t4.tag as t4 from @temp t1
cross join @temp t2
cross join @temp t3
cross join @temp t4
where t1.tag <> t2.tag
and t1.tag <> t3.tag
and t1.tag <> t4.tag
and t2.tag <> t3.tag
and t2.tag <> t4.tag
and t3.tag <> t4.tag
--order by t1.tag,t2.tag,t3.tag,t4.tag
end
--5 records
--Time 1 sec
If (select count(*) from @temp)=5
begin
select t1.tag as t1 ,t2.tag as t2, t3.tag as t3 ,t4.tag as t4 ,t5.tag as t5 from @temp t1
cross join @temp t2
cross join @temp t3
cross join @temp t4
cross join @temp t5
where t1.tag <> t2.tag
and t1.tag <> t3.tag
and t1.tag <> t4.tag
and t1.tag <> t5.tag
and t2.tag <> t3.tag
and t2.tag <> t4.tag
and t2.tag <> t5.tag
and t3.tag <> t4.tag
and t3.tag <> t5.tag
and t4.tag <> t5.tag
--order by t1.tag,t2.tag,t3.tag,t4.tag,t5.tag
end
--6 records
--Time 2 sec
If (select count(*) from @temp)=6
begin
select t1.tag as t1 ,t2.tag as t2, t3.tag as t3 ,t4.tag as t4 ,t5.tag as t5,t6.tag as t6 from @temp t1
cross join @temp t2
cross join @temp t3
cross join @temp t4
cross join @temp t5
cross join @temp t6
where t1.tag <> t2.tag
and t1.tag <> t3.tag
and t1.tag <> t4.tag
and t1.tag <> t5.tag
and t1.tag <> t6.tag
and t2.tag <> t3.tag
and t2.tag <> t4.tag
and t2.tag <> t5.tag
and t2.tag <> t6.tag
and t3.tag <> t4.tag
and t3.tag <> t5.tag
and t3.tag <> t6.tag
and t4.tag <> t5.tag
and t4.tag <> t6.tag
and t5.tag <> t6.tag
--order by t1.tag,t2.tag,t3.tag,t4.tag,t5.tag,t6.tag
end
--7 records
--Time 6 sec
If (select count(*) from @temp)=7
begin
select t1.tag as t1 ,t2.tag as t2, t3.tag as t3 ,t4.tag as t4 ,t5.tag as t5,t6.tag as t6 ,t7.tag as t7 from @temp t1
cross join @temp t2
cross join @temp t3
cross join @temp t4
cross join @temp t5
cross join @temp t6
cross join @temp t7
where t1.tag <> t2.tag
and t1.tag <> t3.tag
and t1.tag <> t4.tag
and t1.tag <> t5.tag
and t1.tag <> t6.tag
and t1.tag <> t7.tag
and t2.tag <> t3.tag
and t2.tag <> t4.tag
and t2.tag <> t5.tag
and t2.tag <> t6.tag
and t2.tag <> t7.tag
and t3.tag <> t4.tag
and t3.tag <> t5.tag
and t3.tag <> t6.tag
and t3.tag <> t7.tag
and t4.tag <> t5.tag
and t4.tag <> t6.tag
and t4.tag <> t7.tag
and t5.tag <> t6.tag
and t5.tag <> t7.tag
and t6.tag <> t7.tag
--order by t1.tag,t2.tag,t3.tag,t4.tag,t5.tag,t6.tag,t7.tag
end
--8 records
--Time 17 sec
If (select count(*) from @temp)=8
begin
select t1.tag as t1 ,t2.tag as t2, t3.tag as t3,
t4.tag as t4 ,t5.tag as t5,
t6.tag as t6 ,t7.tag as t7,
t8.tag as t8
from @temp t1
cross join @temp t2
cross join @temp t3
cross join @temp t4
cross join @temp t5
cross join @temp t6
cross join @temp t7
cross join @temp t8
where t1.tag <> t2.tag
and t1.tag <> t3.tag
and t1.tag <> t4.tag
and t1.tag <> t5.tag
and t1.tag <> t6.tag
and t1.tag <> t7.tag
and t1.tag <> t8.tag
and t2.tag <> t3.tag
and t2.tag <> t4.tag
and t2.tag <> t5.tag
and t2.tag <> t6.tag
and t2.tag <> t7.tag
and t2.tag <> t8.tag
and t3.tag <> t4.tag
and t3.tag <> t5.tag
and t3.tag <> t6.tag
and t3.tag <> t7.tag
and t3.tag <> t8.tag
and t4.tag <> t5.tag
and t4.tag <> t6.tag
and t4.tag <> t7.tag
and t4.tag <> t8.tag
and t5.tag <> t6.tag
and t5.tag <> t7.tag
and t5.tag <> t8.tag
and t6.tag <> t7.tag
and t6.tag <> t8.tag
and t7.tag <> t8.tag
--order by t1.tag,t2.tag,t3.tag,t4.tag,t5.tag,t6.tag,t7.tag,t8.tag
end
--9 records
--Time 22 sec
If (select count(*) from @temp)=9
begin
select t1.tag as t1 ,t2.tag as t2,t3.tag as t3,
t4.tag as t4,t5.tag as t5,
t6.tag as t6,t7.tag as t7,
t8.tag as t8,t9.tag as t9
from @temp t1
cross join @temp t2
cross join @temp t3
cross join @temp t4
cross join @temp t5
cross join @temp t6
cross join @temp t7
cross join @temp t8
cross join @temp t9
where t1.tag <> t2.tag
and t1.tag <> t3.tag
and t1.tag <> t4.tag
and t1.tag <> t5.tag
and t1.tag <> t6.tag
and t1.tag <> t7.tag
and t1.tag <> t8.tag
and t1.tag <> t9.tag
and t2.tag <> t3.tag
and t2.tag <> t4.tag
and t2.tag <> t5.tag
and t2.tag <> t6.tag
and t2.tag <> t7.tag
and t2.tag <> t8.tag
and t2.tag <> t9.tag
and t3.tag <> t4.tag
and t3.tag <> t5.tag
and t3.tag <> t6.tag
and t3.tag <> t7.tag
and t3.tag <> t8.tag
and t3.tag <> t9.tag
and t4.tag <> t5.tag
and t4.tag <> t6.tag
and t4.tag <> t7.tag
and t4.tag <> t8.tag
and t4.tag <> t9.tag
and t5.tag <> t6.tag
and t5.tag <> t7.tag
and t5.tag <> t8.tag
and t5.tag <> t9.tag
and t6.tag <> t7.tag
and t6.tag <> t8.tag
and t6.tag <> t9.tag
and t7.tag <> t8.tag
and t7.tag <> t9.tag
and t8.tag <> t9.tag
--order by t1.tag,t2.tag,t3.tag,t4.tag,t5.tag,t6.tag,t7.tag,t8.tag,t9.tag
end
--10 records
--Time 1 min 45 sec
If (select count(*) from @temp)=10
begin
select t1.tag as t1 ,t2.tag as t2,t3.tag as t3,
t4.tag as t4,t5.tag as t5,
t6.tag as t6,t7.tag as t7,
t8.tag as t8,t9.tag as t9,
t10.tag as t10
from @temp t1
cross join @temp t2
cross join @temp t3
cross join @temp t4
cross join @temp t5
cross join @temp t6
cross join @temp t7
cross join @temp t8
cross join @temp t9
cross join @temp t10
where t1.tag <> t2.tag
and t1.tag <> t3.tag
and t1.tag <> t4.tag
and t1.tag <> t5.tag
and t1.tag <> t6.tag
and t1.tag <> t7.tag
and t1.tag <> t8.tag
and t1.tag <> t9.tag
and t1.tag <> t10.tag
and t2.tag <> t3.tag
and t2.tag <> t4.tag
and t2.tag <> t5.tag
and t2.tag <> t6.tag
and t2.tag <> t7.tag
and t2.tag <> t8.tag
and t2.tag <> t9.tag
and t2.tag <> t10.tag
and t3.tag <> t4.tag
and t3.tag <> t5.tag
and t3.tag <> t6.tag
and t3.tag <> t7.tag
and t3.tag <> t8.tag
and t3.tag <> t9.tag
and t3.tag <> t10.tag
and t4.tag <> t5.tag
and t4.tag <> t6.tag
and t4.tag <> t7.tag
and t4.tag <> t8.tag
and t4.tag <> t9.tag
and t4.tag <> t10.tag
and t5.tag <> t6.tag
and t5.tag <> t7.tag
and t5.tag <> t8.tag
and t5.tag <> t9.tag
and t5.tag <> t10.tag
and t6.tag <> t7.tag
and t6.tag <> t8.tag
and t6.tag <> t9.tag
and t6.tag <> t10.tag
and t7.tag <> t8.tag
and t7.tag <> t9.tag
and t7.tag <> t10.tag
and t8.tag <> t9.tag
and t8.tag <> t10.tag
and t9.tag <> t10.tag
--order by t1.tag,t2.tag,t3.tag,t4.tag,t5.tag,t6.tag,t7.tag,t8.tag,t9.tag,t10.tag
end
--select tag as t1,t2,t3,t4,t5,t6,t7 from @temp1
--group by tag,t2,t3,t4,t5,t6,t7