Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как сделать SELECT подзапрос в IN в PIVOT для MSSS?  [new]
Оз
Guest
Как сделать так же, ток для MSSS?: http://stackoverflow.com/questions/8759939/example-of-an-oracle-pivot-clause-with-subquery
29 апр 13, 15:06    [14244512]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать SELECT подзапрос в IN в PIVOT для MSSS?  [new]
qwerty112
Guest
Оз
Как сделать так же, ток для MSSS?: http://stackoverflow.com/questions/8759939/example-of-an-oracle-pivot-clause-with-subquery

динамическим запросом
29 апр 13, 15:11    [14244543]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать SELECT подзапрос в IN в PIVOT для MSSS?  [new]
Оз
Guest
qwerty112, ещё варианты? Мне в том месте нельзя использовать функции и переменные.
MSSS знает что XML служебное слово, ток на синтаксис ругается...
29 апр 13, 15:17    [14244600]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать SELECT подзапрос в IN в PIVOT для MSSS?  [new]
Оз
Guest
...или я не так вас понял?
29 апр 13, 15:18    [14244610]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать SELECT подзапрос в IN в PIVOT для MSSS?  [new]
qwerty112
Guest
Оз
...или я не так вас понял?

я имел в виду - составить запрос динамически, сформировав часть for ... in ( ... ) ,
а потом его выполнить

вот, типа этого - 12025145
29 апр 13, 15:28    [14244666]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать SELECT подзапрос в IN в PIVOT для MSSS?  [new]
Гость333
Member

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

Вам нужен аналог ораклового PIVOT XML? Вы знаете, как он работает?
29 апр 13, 15:31    [14244703]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать SELECT подзапрос в IN в PIVOT для MSSS?  [new]
Оз
Guest
PIVOT
(
<aggregation function>( <агрегированный столбец> )
FOR
[<столбец, который содержит значение, которые станут заголовками столбцов>]
IN ( [первый сведенный столбец] , [второй сведенный столбец] , ... , [последний сведенный столбец] )


<столбец, который содержит значение, которые станут заголовками столбцов> - это join'ится таблица, точнее id.
[первый сведенный столбец] .. [последний сведенный столбец] - это должны быть строки таблицы которая join'ится.
Вот только строк количество не постоянно. То есть мне нужно чтоб запрос вместо
... B.id ... JOIN B ON... PIVOT (MAX(A) FOR B IN ([1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14]))

был вида
... B.id ... JOIN B ON... PIVOT (MAX(A) FOR id IN (SELECT id FROM B))

ибо количество вариантов B.id может увеличиться до 23 например, а в общем случае неизвестно.

эх... "exec" там точно нельзя. =(
29 апр 13, 17:38    [14245682]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать SELECT подзапрос в IN в PIVOT для MSSS?  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
Оз
ибо количество вариантов B.id может увеличиться до 23 например, а в общем случае неизвестно.

тут нужна динамика
или должен быть известен общий потолок на количество столбцов, ненужные останутся пустыми
29 апр 13, 17:49    [14245748]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать SELECT подзапрос в IN в PIVOT для MSSS?  [new]
Оз
Guest
Shakill, у меня просто дополнительное ограничение на то чем можно пользоваться... А известно лишь что количество вариантов равно количеству строк в такой-то таблице, сейчас около 20.
Жаль, надеялся на встроенную функцию очень.
29 апр 13, 19:01    [14246019]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить