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

Откуда:
Сообщений: 19
смотрю вот тут образец
http://technet.microsoft.com/ru-ru/library/ms177410(v=sql.105).aspx

пробую для таблицы
declare @t table ([key]varchar(50), value varchar(50))

insert into @t
select 'key_1', 'value_1'
union all
select 'key_2', 'value_2'
union all
select 'key_3', 'value_3'

select * from @t


хочу получить
key_1   |key_2  |key_3   |
-------------------------
value_1|value_2|value_3 |

то как понял из примера оно вроде както так должно быть
SELECT [key_1],[key_2],[key_3]
FROM
(SELECT [key], [value]
 FROM @t) AS SourceTable
PIVOT
(
value
FOR [key] IN ('key_1','key_2','key_3')
) AS PivotTable;


но так не получается, подскажите как правильно, никак не соображу
13 авг 14, 14:48    [16436870]     Ответить | Цитировать Сообщить модератору
 Re: PIVOT в чем ошибка?  [new]
Glory
Member

Откуда:
Сообщений: 104760
Kill_Maker
никак не соображу

Разве value похоже на <статистическая функция>(<статистически обработанный столбец>) ?
13 авг 14, 14:51    [16436889]     Ответить | Цитировать Сообщить модератору
 Re: PIVOT в чем ошибка?  [new]
Kill_Maker
Member

Откуда:
Сообщений: 19
не похожа, да

но как правильно то?
13 авг 14, 15:20    [16437049]     Ответить | Цитировать Сообщить модератору
 Re: PIVOT в чем ошибка?  [new]
Glory
Member

Откуда:
Сообщений: 104760
Kill_Maker
но как правильно то?

1. Узнать, что такое <статистическая функция>
2. Найти ее в примере из http://technet.microsoft.com/ru-ru/library/ms177410(v=sql.105).aspx
3. Переписать свой запрос
13 авг 14, 15:23    [16437075]     Ответить | Цитировать Сообщить модератору
 Re: PIVOT в чем ошибка?  [new]
Konst_One
Member

Откуда:
Сообщений: 11538
Declare @t table ([key] varchar(50), value int)

insert into @t
select 'key_1', 1
union all
select 'key_2', 2
union all
select 'key_3', 3

--select * from @t

SELECT [key_1],[key_2],[key_3]
FROM
(SELECT [key], [value]
 FROM @t) AS SourceTable
PIVOT
(MIN(value) FOR [key] IN ([key_1],[key_2],[key_3])) AS PivotTable;
13 авг 14, 15:25    [16437102]     Ответить | Цитировать Сообщить модератору
 Re: PIVOT в чем ошибка?  [new]
Kill_Maker
Member

Откуда:
Сообщений: 19
Konst_One

благодарю!
13 авг 14, 15:34    [16437181]     Ответить | Цитировать Сообщить модератору
 Re: PIVOT в чем ошибка?  [new]
Kill_Maker
Member

Откуда:
Сообщений: 19
Glory
Kill_Maker
но как правильно то?

1. Узнать, что такое <статистическая функция>
2. Найти ее в примере из http://technet.microsoft.com/ru-ru/library/ms177410(v=sql.105).aspx
3. Переписать свой запрос


что такое и для чего нужны статистические функции я знаю

мне не понятно, если есть задача развернуть датасет горизонтально
то зачем мне статистические функции, при таких раскладах

с чтоб получить обратное действие с UNPIVOT'ом там никаких статистических функций не нужно

вот это я и не могу понять,
причем тут статистика?
13 авг 14, 15:37    [16437206]     Ответить | Цитировать Сообщить модератору
 Re: PIVOT в чем ошибка?  [new]
Konst_One
Member

Откуда:
Сообщений: 11538
ну как бы сервер то не волшебством занимается в своём PIVOT, поэтому такие и требования
13 авг 14, 15:40    [16437217]     Ответить | Цитировать Сообщить модератору
 Re: PIVOT в чем ошибка?  [new]
Glory
Member

Откуда:
Сообщений: 104760
Kill_Maker
с чтоб получить обратное действие с UNPIVOT'ом там никаких статистических функций не нужно

вот это я и не могу понять,
причем тут статистика?

1. Статистика ни имеет никакого отношения к термину "статистическая функция"
2. Если в синтаксисе команды указано, что в этом фрагменте нужна "статистическая функция", то значит, придется написать сюда именно "статистическую функцию". А не то, что вам хочется или кажется логичным
13 авг 14, 15:44    [16437243]     Ответить | Цитировать Сообщить модератору
 Re: PIVOT в чем ошибка?  [new]
mrGuest
Guest
Kill_Maker,

При том, что серверу нужно знать, что Вы хотите получить например в поле key_1 в таком случае:
insert into @t
select 'key_1', 1
union all
select 'key_2', 2
union all
select 'key_3', 3
union all
select 'key_1', 4
13 авг 14, 15:46    [16437258]     Ответить | Цитировать Сообщить модератору
 Re: PIVOT в чем ошибка?  [new]
Kill_Maker
Member

Откуда:
Сообщений: 19
mrGuest
Kill_Maker,

При том, что серверу нужно знать, что Вы хотите получить например в поле key_1 в таком случае:
insert into @t
select 'key_1', 1
union all
select 'key_2', 2
union all
select 'key_3', 3
union all
select 'key_1', 4

в таком да, но у меня не такой,
у меня все значения символьные

да и просто циклами, и динамическим sql, это сделаю без всяких статистических функций
13 авг 14, 15:56    [16437339]     Ответить | Цитировать Сообщить модератору
 Re: PIVOT в чем ошибка?  [new]
Glory
Member

Откуда:
Сообщений: 104760
Kill_Maker
у меня все значения символьные

Дело не в типе данных, а повторяющихся значениях
Сервер не должен за вас решать, какое из этих повторяющихся значений он должен отобрать в результаты
13 авг 14, 15:59    [16437360]     Ответить | Цитировать Сообщить модератору
 Re: PIVOT в чем ошибка?  [new]
Konst_One
Member

Откуда:
Сообщений: 11538
Kill_Maker
mrGuest
Kill_Maker,

При том, что серверу нужно знать, что Вы хотите получить например в поле key_1 в таком случае:
insert into @t
select 'key_1', 1
union all
select 'key_2', 2
union all
select 'key_3', 3
union all
select 'key_1', 4


в таком да, но у меня не такой,
у меня все значения символьные

да и просто циклами, и динамическим sql, это сделаю без всяких статистических функций



declare @t table ([key]varchar(50), value varchar(10))

insert into @t
select 'key_1', 'a1'
union all
select 'key_2', 'b2'
union all
select 'key_3', 'c3'


SELECT [key_1],[key_2],[key_3]
FROM
(SELECT [key], [value]
 FROM @t) AS SourceTable
PIVOT
(MIN(value) FOR [key] IN ([key_1],[key_2],[key_3])) AS PivotTable;


вам совсем про другое тут пытаются объяснить, что вы заладили : у меня всё не так?
13 авг 14, 16:00    [16437371]     Ответить | Цитировать Сообщить модератору
 Re: PIVOT в чем ошибка?  [new]
Kill_Maker
Member

Откуда:
Сообщений: 19
всем спасибо
13 авг 14, 16:01    [16437379]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить