【问题标题】:PIVOT with varchar datatype具有 varchar 数据类型的 PIVOT
【发布时间】:2014-03-05 00:52:03
【问题描述】:

我正在尝试 PIVOT 表中的某些数据,但我不能这样做,因为我找不到使用 varchar 列的方法。我有这张桌子:

而我需要的是这个:

我需要使用“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

有人可以帮我吗??

谢谢。

【问题讨论】:

    标签: sql sql-server-2008 pivot


    【解决方案1】:

    您仍然可以使用 PIVOT 函数来获取结果,但由于您正在聚合 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-16
      • 2019-05-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多