我试图在表格中隐藏一些数据,但我不能这样做,因为我找不到使用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
有人可以帮助我吗??。
感谢。
答案 0 :(得分:20)
您仍然可以使用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