Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Cross join на 5 полей, как? / 5 сообщений из 5, страница 1 из 1
12.09.2018, 11:33
    #39701346
User2155
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cross join на 5 полей, как?
Добрый день,

мне нужна таблица с данными, где 5 полей и в каждом может быть 1 или 0.
Это для куба.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
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



Как бы её попроще написать, а?
...
Рейтинг: 0 / 0
12.09.2018, 11:37
    #39701351
court
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cross join на 5 полей, как?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
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


?
...
Рейтинг: 0 / 0
12.09.2018, 11:39
    #39701353
User2155
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cross join на 5 полей, как?
court,
спасибо.
...
Рейтинг: 0 / 0
12.09.2018, 12:02
    #39701364
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cross join на 5 полей, как?
Код: sql
1.
2.
3.
4.
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;
...
Рейтинг: 0 / 0
13.09.2018, 10:36
    #39701914
andrey odegov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cross join на 5 полей, как?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
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;
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Cross join на 5 полей, как? / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]