CAST CASE оператор превышает лимит - PullRequest
0 голосов
/ 20 февраля 2019

Я бы хотел создать отчет, в котором бы все типы описаний должностей содержались бы в одной строке (аккуратный формат) вместо нескольких строк на должность.Текущий отчет дает мне:

Job Title    Description Type    Posting Description
Cook         Responsibilities    Make food
Cook         Requirements        3 Years of Experience

Требуемый вывод:

Job Title    Responsibilities    Requirements 
Cook         Make food           3 Years of Experience

Сначала я попробовал базовый оператор CASE, который использует, но узнал здесь, мне нужно использовать CAST.Но когда я это делаю, я получаю ошибки.С тем, что у меня есть в настоящее время, получается полная строка описания публикации.Я не уверен, как это исправить.

БОНУС: Строка содержит текст HTML ... Если кто-то может сказать мне об этом, это будет большая помощь.

CAST(
CASE WHEN ([Description Type Number] =3)
THEN [Enterprise Staffing].[Job Opening].[Posting Description]
END 
AS VARCHAR(20))

ОШИБКА РЕЗУЛЬТАТА RQP-DEF-0177 Произошла ошибка при выполнении операции 'sqlOpenResult' status = '- 9'.UDA-SQL-0107 Произошло общее исключение во время операции «открыть результат».ORA-22835: слишком маленький буфер для преобразования CLOB в CHAR или BLOB в RAW (фактическое: 6747, максимальное: 4000)

CAST(
CASE WHEN ([Description Type Number] =3)
THEN [Enterprise Staffing].[Job Opening].[Posting Description]
END 
AS CHAR)

RESULTING ERROR RQP-DEF-0177 Произошла ошибка при выполнении операции 'sqlOpenResult'статус = '- 9'.UDA-SQL-0107 Произошло общее исключение во время операции «открыть результат».ORA-25137: значение данных выходит за пределы

1 Ответ

0 голосов
/ 20 февраля 2019

Первый: это кросс-таблица.Вы можете переосмыслить это.

Второе: знайте свои данные.

Похоже, что [Описание публикации] содержит значения длиной до 6747 символов.Исходя из сообщения об ошибке, это может быть текст или ntext .varchar (20) недостаточно длинный.Попытка привести его к символу неопределенной длины, кажется, вызывает различные проблемы.Предполагая, что это MS SQL Server, может помочь что-то вроде этого:

CASE 
  WHEN ([Description Type Number] =3)
    THEN CAST([Enterprise Staffing].[Job Opening].[Posting Description], VARCHAR(8000))
  ELSE CAST('', VARCHAR(8000))
END 

Но ваше сообщение об ошибке, вероятно, указывает на базу данных Oracle.(ORA-52137)

CASE 
  WHEN ([Description Type Number] =3)
    THEN CAST((substr([Enterprise Staffing].[Job Opening].[Posting Description], 1, 4000), VARCHAR2(4000))
  ELSE CAST('', VARCHAR2(4000))
END 

Кроме того, CAST в Cognos использует запятую, а не AS .

...