【发布时间】:2016-10-26 14:31:51
【问题描述】:
我有一个三列的表。值列始终为NULL。我知道如何将行转换为列,但我也想用“X”标识单元格。
表格
EditorTypeSymbolicName ClaimFieldSymbolicName Value
01 AA NULL
01 BB NULL
01 CC NULL
02 BB NULL
02 CC NULL
03 AA NULL
这是我的代码
DECLARE @cols NVARCHAR(MAX), @sql NVARCHAR(MAX)
SET @cols = STUFF((SELECT DISTINCT ',' + QUOTENAME(ClaimFieldSymbolicName)
FROM #TempEditElements
ORDER BY 1
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)'),1,1,'')
SET @sql = 'SELECT EditorTypeSymbolicName, ' + @cols + '
FROM
(
select EditorTypeSymbolicName, ClaimFieldSymbolicName, Value
from #TempEditElements
) s
PIVOT
(
MAX(Value) FOR ClaimFieldSymbolicName IN (' + @cols + ')
) p
order by EditorTypeSymbolicName'
EXECUTE(@sql)
我的代码转置了它,但我不知道如何用“X”标记它们。我希望输出如下:
EditorTypeSymbolicName AA BB CC
01 X X X
02 NULL X X
03 X NULL NULL
当前输出如下所示
EditorTypeSymbolicName AA BB CC
01 NULL NULL NULL
02 NULL NULL NULL
03 NULL NULL NULL
【问题讨论】:
-
你说的identify是什么意思?是否要将结果限制为 Value 列中包含“X”的行?
-
当前输出是什么样的?你能把它添加到你的问题中吗?
-
@TT - 添加当前输出。
-
@Gerardo Lima - 当将 ClaimFieldSymbolicName 转置为列时,我想通过 X 识别 EditorTypeSymbolicName 具有 ClaimFieldSymbolicName 的位置
标签: sql-server sql-server-2008 tsql pivot