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

Откуда:
Сообщений: 588
Добрый день!
Select ID, a,b,c,d 
FROM T1

выдаёт 100 строк
Хочу, чтобы он выдавал 200 строк, повторяя каждую строку дважды. При этом должен добавиться ещё столбец:
ID abcd
1a1b1c1d1
2a2b2c2d2
3a3b3c3d3
4a4b4c4d4
5a5b5c5d5

... должен превратиться в:
ID abcd name
1a1b1c1d1 'первый'
1a1b1c1d1 'второй'
2a2b2c2d2 'второй'
2a2b2c2d2 'второй'
3a3b3c3d3 'второй'
3a3b3c3d3 'второй'
4a4b4c4d4 'второй'
4a4b4c4d4 'второй'
5a5b5c5d5 'второй'
5a5b5c5d5 'второй'


Вариант на "псевдо-sql-коде":
Select ID, a,b,c,d 
FROM T1
cross join Select * from ('первый','второй') as T2

а если и создать временную таблицу, то непосредственно в коде.. то есть, всё должно быть как одна конструкция
Подскажите, пожалуйста.
2 июл 14, 14:59    [16249635]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли удвоить число строк запроса без создания доп.таблицы?  [new]
Nika gnome
Member

Откуда:
Сообщений: 588
исправлю ошибку
[quot Nika gnome]
... должен превратиться в:
ID abcd name
1a1b1c1d1 'первый'
1a1b1c1d1 'второй'
2a2b2c2d2 'первый'
2a2b2c2d2 'второй'
3a3b3c3d3 'первый'
3a3b3c3d3 'второй'
4a4b4c4d4 'первый'
4a4b4c4d4 'второй'
5a5b5c5d5 'первый'
5a5b5c5d5 'второй'
2 июл 14, 15:03    [16249681]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли удвоить число строк запроса без создания доп.таблицы?  [new]
Гадя Петрович
Member

Откуда: планета Плюк, 215 в тентуре, галактика Кин-дза-дза в Спирали
Сообщений: 52912
Select ID, a,b,c,d,'первый'
FROM T1
UNION
Select ID, a,b,c,d,'второй'
FROM T1
2 июл 14, 15:06    [16249715]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли удвоить число строк запроса без создания доп.таблицы?  [new]
Shakill
Member

Откуда: мск
Сообщений: 1880
Nika gnome,

Select ID, a,b,c,d, ca.txt
from T1
cross apply (values ('Первый'), ('Второй')) ca(txt)
2 июл 14, 15:07    [16249720]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли удвоить число строк запроса без создания доп.таблицы?  [new]
Nika gnome
Member

Откуда:
Сообщений: 588
Гадя Петрович,

не пойдёт, поскольку на самом деле мой запрос занимает несколько десятков строк :-(

Shakill, спасибо! Выглядит как то, что мне нужно! Сейчас попробую
2 июл 14, 15:08    [16249738]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли удвоить число строк запроса без создания доп.таблицы?  [new]
Nika gnome
Member

Откуда:
Сообщений: 588
Гадя Петрович,

не пойдёт, поскольку на самом деле мой запрос занимает несколько десятков строк :-(

Shakill, спасибо! Выглядит как то, что мне нужно! Сейчас попробую
...

получилось)) цулумс
2 июл 14, 15:10    [16249762]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли удвоить число строк запроса без создания доп.таблицы?  [new]
Гадя Петрович
Member

Откуда: планета Плюк, 215 в тентуре, галактика Кин-дза-дза в Спирали
Сообщений: 52912
Nika gnome
не пойдёт, поскольку на самом деле мой запрос занимает несколько десятков строк :-(
WITH CTE AS(
Select ID, a,b,c,d
FROM T1)

Select ID, a,b,c,d,'первый'
FROM CTE
UNION
Select ID, a,b,c,d,'второй'
FROM CTE
2 июл 14, 15:11    [16249768]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли удвоить число строк запроса без создания доп.таблицы?  [new]
Nika gnome
Member

Откуда:
Сообщений: 588
Гадя Петрович,

мой аргумент отпадает) спасибо
2 июл 14, 16:34    [16250600]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли удвоить число строк запроса без создания доп.таблицы?  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
Shakill
Nika gnome,

Select ID, a,b,c,d, ca.txt
from T1
cross apply (values ('Первый'), ('Второй')) ca(txt)
А зачем там APPLY? Не понял чего-то
CROSS JOIN чем не угодил?
2 июл 14, 16:58    [16250887]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли удвоить число строк запроса без создания доп.таблицы?  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
iap,

патамуша савсем скоро 1 строка запроса будет оформляться через сте и половина джойнов будут лепиться апплаем :)
2 июл 14, 17:11    [16251043]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли удвоить число строк запроса без создания доп.таблицы?  [new]
Shakill
Member

Откуда: мск
Сообщений: 1880
iap
А зачем там APPLY? Не понял чего-то
CROSS JOIN чем не угодил?
а разве это не одно и тоже в данном случае?
2 июл 14, 17:15    [16251062]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли удвоить число строк запроса без создания доп.таблицы?  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
Shakill
iap
А зачем там APPLY? Не понял чего-то
CROSS JOIN чем не угодил?
а разве это не одно и тоже в данном случае?
CROSS JOIN - это классика!
2 июл 14, 17:16    [16251075]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли удвоить число строк запроса без создания доп.таблицы?  [new]
o-o
Guest
iap
CROSS JOIN чем не угодил?


как вариант: человек читает некую фундаментальную книгу по SQL,
но конкретно с SQL Server-ом "на Вы".
в теории говорится о некоем cross join-е:
Nika gnome
Вариант на "псевдо-sql-коде":

но вместо непосредственной проверки лучше же спросить на форуме :)
как это в SQL Server-e реализовано.
начиная с первого отвечающего, вопрос был понят типа "как такое сделать БЕЗ cross join-а",
потому что вроде чел и спрашивает, и ответ тут же приводит, и еще что-то хочет.
вот "еще что-то" и стали предлагать :)
2 июл 14, 17:24    [16251150]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли удвоить число строк запроса без создания доп.таблицы?  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
o-o
вроде чел и спрашивает, и ответ тут же приводит
Но этот ответ синтаксически безграмотен.
И поэтому, конечно же, не работает!
Его чуть-чуть подправить надо (скобки, например, написать)
2 июл 14, 17:37    [16251245]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли удвоить число строк запроса без создания доп.таблицы?  [new]
o-o
Guest
iap,

подкорректируем версию: "псевдокод" был таки опробован,
выдал синтакс. ошибку, на основании к-ой ТС теперь подозревает, что cross join в SQL Server как-то по-другому реализован

ну вроде ж теперь сомнения развеяны,
и как "псевдокод" превратить в рабочий код -- тоже указано
2 июл 14, 17:44    [16251283]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить