使用varchar数据类型的PIVOT

Nic*_*iff 10 sql pivot sql-server-2008

我试图在表格中隐藏一些数据,但我不能这样做,因为我找不到使用carchar列的方法.我有这张桌子:

在此输入图像描述

而我需要的是:

在此输入图像描述

我需要使用'ug_label'行数据作为列.由于数据类型是VARCHAR,我不能在PIVOT中使用agregate函数.

我想我可能需要这样的东西:

SELECT *
FROM
(SELECT [c_id]
      ,[c_lname] as [Apellido]
      ,[c_fname] as [Nombre]
      ,[c_nick_name] as [documento]      
      ,[ut_text] 
      ,f.ug_label
  FROM [pegasys].[dbo].[cardholder] c
  inner join [pegasys].[dbo].[udftext] u on c.c_id = u.ut_cardholder_id 
  inner join [pegasys].[dbo].[udfgen] f on u.ut_udfgen_id = f.ug_id) AS S  
PIVOT
(
    UT_TEXT
    FOR
    [UG_LABEL]
    IN ([Torre], [Cuit], [Empresa], [Departamento])
) as s
Run Code Online (Sandbox Code Playgroud)

有人能帮我吗??.

谢谢.

Tar*_*ryn 21

您仍然可以使用PIVOT函数来获得结果,但由于您正在聚合a,varchar您必须使用max或者min:

SELECT *
FROM
(
  SELECT [c_id]
      ,[c_lname] as [Apellido]
      ,[c_fname] as [Nombre]
      ,[c_nick_name] as [documento]      
      ,[ut_text] 
      ,f.ug_label
  FROM [pegasys].[dbo].[cardholder] c
  inner join [pegasys].[dbo].[udftext] u on c.c_id = u.ut_cardholder_id 
  inner join [pegasys].[dbo].[udfgen] f on u.ut_udfgen_id = f.ug_id
) d  
PIVOT
(
    max(ut_text)
    FOR UG_LABEL IN ([Torre], [Cuit], [Empresa], [Departamento])
) p
Run Code Online (Sandbox Code Playgroud)