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

Откуда:
Сообщений: 23
Итак, есть таблица id (int), region (varchar), access (bit). Допустим все регионы я знаю. Мне нужно выполнить следующий запрос:
SELECT id, europa, asia, america
FROM Permission
PIVOT
(
	MAX(access) FOR region in (europa, asia, america)
) AS PivotTable
На что я получаю такую ошибку
MS SQL Server 2005
Msg 8117, Level 16, State 1, Line 1
Operand data type bit is invalid for max operator.

Перепробывал несколько функция, сработало только с COUNT, но при этом выдало неправильные результаты, один и тот же id был в двух строчках. Как заставить "это" работать?
27 май 09, 11:11    [7232932]     Ответить | Цитировать Сообщить модератору
 Re: pivot по колонке bit  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
progik
MS SQL Server 2005
Msg 8117, Level 16, State 1, Line 1
Operand data type bit is invalid for max operator.
Предлагаю привести bit к int, взять максимум и привести обратно
27 май 09, 11:16    [7232965]     Ответить | Цитировать Сообщить модератору
 Re: pivot по колонке bit  [new]
progik
Member

Откуда:
Сообщений: 23
Паганель
Предлагаю привести bit к int, взять максимум и привести обратно

Вы имели ввиду
SELECT id, europa, asia, america
FROM Permission
PIVOT
(
	MAX(CAST(access AS int)) FOR region in (europa, asia, america)
) AS PivotTable
Так это не работает :(

А если не это, то что?
27 май 09, 11:20    [7233006]     Ответить | Цитировать Сообщить модератору
 Re: pivot по колонке bit  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
progik
Так это не работает :(
Это текст сообщения об ошибке "я не работаю" ?
27 май 09, 11:21    [7233016]     Ответить | Цитировать Сообщить модератору
 Re: pivot по колонке bit  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
progik
А если не это, то что?
declare @Permission table(id int, region varchar(10), access bit, unique (id, region))
insert into @Permission(id, region, access)
select 1, 'europa',  'true'  union all
select 1, 'asia',    'false' union all
select 1, 'america', 'true'  union all
select 2, 'europa',  'false' union all
select 2, 'america', 'false'

select id
      ,cast([europa] as bit)  as [europa]
      ,cast([asia] as bit)    as [asia]
      ,cast([america] as bit) as [america]
  from (select id, region, cast(access as int) as access from @Permission
       ) as Permission
 pivot (max(access) for region in ([europa], [asia], [america])) as pivottable

id          europa asia  america
----------- ------ ----- -------
1           1      0     1
2           0      NULL  0

(2 row(s) affected)
27 май 09, 11:29    [7233092]     Ответить | Цитировать Сообщить модератору
 Re: pivot по колонке bit  [new]
progik
Member

Откуда:
Сообщений: 23
Паганель
спасибо
27 май 09, 13:46    [7234399]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить