我的数据如下:
[attribute] [value]
foo yellow
foo green
foo red
foo blue
foo orange
foo cyan
foo magenta
foo white
foo brown
foo purple
我想将数据转换为兼容性矩阵的一种框架,它应该看起来像( cols 和 rows 基于属性值):
yellow green red blue orange cyan magenta white brown purple
yellow x
green x
red x
blue x
orange x
cyan x
magenta x
white x
brown x
purple x
同种属性应自动填充x
,其他所有组合由用户稍后设置。由于values
per的数量attribute
可能会有所不同,因此如果动态完成转换会很好。
我使用 pivot / unpivot 拍摄了一些照片,但只改变了 cols ans 行 - 所以只走了一半(或四分之一;))的方式。
任何帮助或提示表示赞赏!
编辑:为了更好地理解,我更改了演示数据的属性值。颜色值以前是数字。
Edit2:根据斯蒂芬的更新答案和所提到的动态获取结果的目标,我添加了以下示例查询。也许有人可以使用它,有同样的需要。#data 是提供基础数据的临时表。
DECLARE @SQL VARCHAR(MAX);
SET @SQL = 'SELECT ' + '?placeholder?' + ' as name, '
SELECT @SQL = @SQL + case when row_number() over ( order by rand() ) > 1 then ',' else '' end + 'case value when ''' + cast( d.value as nvarchar ) + ''' then 1 else 0 end as "' + cast( d.value as nvarchar ) + '"' from #data as d;
select @sql = @sql + ' from #data;'
set @SQL = replace( @sql, '?placeholder?', 'value' );
--select @SQL;
exec ( @sql )