aTable -
CREATE TABLE
DECLARE @CNT integer;
SELECT @CNT = COUNT(0) FROM aTable;
DECLARE @I int;
SET @I = 0
WHILE @I < POWER(2, @CNT)
BEGIN
INSERT
SET @I = @I + 1;
END
;with cte as (select *, row_number() over (order by id) as rn from aTable),
combs as (select c1.z,cte.rn, cte.val, POWER(2, cte.rn -1) & c1.z as flag from cte join
select *, row_number() over (partition by z order by rn) as lev, val final_val into
DECLARE @depth as integer;
SET @depth = 2;
WHILE EXISTS (SELECT 0 FROM
begin
UPDATE
SET
FROM
INNER JOIN
ON
p.lev =
set @depth = @depth + 1;
end
select
DROP TABLE
DROP TABLE
with t as
(select * from atable),
cur as
( select id, val from t union all
select t.id, t.val & cur.val from cur join t on cur.id>t.id)
select id,val
from cur
order by id