2014-02-07 107 views
7

我正尝试在一个表中转动的一些数据,但我不能这样做,因为我没有找到使用carchar列做到这一点。我有这个表:PIVOT与varchar数据类型

enter image description here

而我需要的是这样的:

enter image description here

我需要使用 'ug_label' 行数据列。由于数据类型是VARCHAR,因此我无法在PIVOT中使用聚合函数。

我想我可能需要的是这样的:

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 

有人能帮助我吗?。

谢谢。

回答

16

你仍然可以使用旋转功能来获得结果,但因为你是一个聚集你varchar必须为使用maxmin

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 
+0

感谢的人,是工作。简单。 – NicoRiff

相关问题