我想构建一个报告,它为我提供了一行(整齐格式)的作业描述类型,而不是每个作业标题有多行。目前的报告给了我:
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'state =' - 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)
导致错误RQP-DEF-0177执行操作'sqlOpenResult'state =' - 9'时发生错误。 UDA-SQL-0107在“打开结果”操作期间发生了一般异常。 ORA-25137:数据值超出范围
第一:这是一个交叉表。你可能会过度思考这个问题。
第二:了解你的数据。
看起来[发布说明]包含的值长达6747个字符。根据错误消息,它可能是text或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
此外,Cognos中的CAST使用逗号,而不是AS。