web-dev-qa-db-ja.com

varcharデータ型のPIVOT

テーブル内のいくつかのデータをPIVOTしようとしていますが、carchar列を使用してそれを行う方法が見つからないため、それを行うことができません。私はこのテーブルを持っています:

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

誰かが私を助けることができますか?.

ありがとう。

12
NicoRiff

PIVOT関数を使用して結果を取得することはできますが、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
20
Taryn