Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Cross join на 5 полей, как?  [new]
User2155
Member

Откуда:
Сообщений: 150
Добрый день,

мне нужна таблица с данными, где 5 полей и в каждом может быть 1 или 0.
Это для куба.
select 0 as col1, 0 as col2, 0 as col3, 0 as col4, 0 as col5
union all
select 1 as col1, 0 as col2, 0 as col3, 0 as col4, 0 as col5
union all
select 0 as col1, 1 as col2, 0 as col3, 0 as col4, 0 as col5
union all 
select 1 as col1, 1 as col2, 0 as col3, 0 as col4, 0 as col5

......

union all
select 1 as col1, 1 as col2, 1 as col3, 1 as col4, 1 as col5


Как бы её попроще написать, а?
12 сен 18, 11:33    [21671886]     Ответить | Цитировать Сообщить модератору
 Re: Cross join на 5 полей, как?  [new]
court
Member

Откуда:
Сообщений: 1956
with t as (select 0 as n union all select 1)

select
	t1.n
	,t2.n
	,t3.n
	,t4.n
	,t5.n
from t t1 cross join t t2 cross join t t3 cross join t t4 cross join t t5
order by 1,2,3,4,5

?
12 сен 18, 11:37    [21671893]     Ответить | Цитировать Сообщить модератору
 Re: Cross join на 5 полей, как?  [new]
User2155
Member

Откуда:
Сообщений: 150
court,
спасибо.
12 сен 18, 11:39    [21671899]     Ответить | Цитировать Сообщить модератору
 Re: Cross join на 5 полей, как?  [new]
iap
Member

Откуда: Москва
Сообщений: 46953
WITH T(F) AS (SELECT 0 UNION ALL SELECT F+1 FROM T WHERE F<31)
SELECT F,col1=SIGN(F&POWER(2,0)), col2=SIGN(F&POWER(2,1)), col3=SIGN(F&POWER(2,2)), col4=SIGN(F&POWER(2,3)), col5=SIGN(F&POWER(2,4))
FROM T
ORDER BY F;
12 сен 18, 12:02    [21671932]     Ответить | Цитировать Сообщить модератору
 Re: Cross join на 5 полей, как?  [new]
andrey odegov
Member

Откуда:
Сообщений: 463
SELECT
  grouping(c) col1,
  grouping(c+1) col2,
  grouping(c+2) col3,
  grouping(c+3) col4,
  grouping(c+4) col5
from(values(0)) t(c)
GROUP BY CUBE(c,c+1,c+2,c+3,c+4)
order by col1, col2, col3, col4, col5;
13 сен 18, 10:36    [21673176]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить