Неправильный знак кавычек при использовании crossstab () в PostgreSQL

У меня есть таблица t1 , как показано ниже:

create table t1 (
  person_id int,
  item_name varchar(30),
  item_value varchar(100)
);

В этой таблице пять записей:

person_id | item_name | item_value
   1        'NAME'      'john'
   1        'GENDER'    'M'
   1        'DOB'       '1970/02/01'
   1        'M_PHONE'   '1234567890'
   1        'ADDRESS'   'Some Addresses unknown'

Теперь я хочу использовать функцию кросс-таблицы для извлечения NAME , GENDER данные, поэтому я пишу SQL как:

select * from crosstab(
  'select person_id, item_name, item_value from t1 
   where person_id=1 and item_name in ('NAME', 'GENDER') ') 
as virtual_table (person_id int, NAME varchar, GENDER varchar)

Моя проблема, как вы видите, SQL в crossstab () содержит условие имя_элемента , что приведет к неправильным кавычкам. Как решить эту проблему?

5
задан Erwin Brandstetter 13 May 2015 в 23:48
поделиться