我已经在 StackOverflow 和谷歌上搜索了很长一段时间,但一直无法找到与我想要的 SQL 解决方案相差甚远的答案。我有一个 CSV 文件(1 个表),其中包含大量用户的数据。问题是每个用户有多行具有多个分数但相同的 UserID。我想将这些分数移到它们自己的列中,以在一行中显示所有用户数据。如何使用 SQL 实现此目的?
当前布局示例:
UserID FNm LNm Measure Score
0001 person one LNF 26
0001 person one NFS 74
0001 person one CFS 54
0002 person two LNF 35
0002 person two NFS 43
0002 person two CFS 33
所需的解决方案:
UserID FNm LNm LNF NFS CFS
0001 person one 26 74 54
0002 person two 35 43 33
最佳答案
首先,将所有记录按原样插入某个临时表中。 第二,将合并后的数据插入到需要的表中;选择部分是关于:
select UserID, FNm, LNm,
max(case when Measure='LNF' then Score else 0 end) as LNF,
max(case when Measure='NFS' then Score else 0 end) as NFS,
max(case when Measure='CFS' then Score else 0 end) as CFS
from temptable
group by UserID, FNm, LNm
关于sql-server - 将多行数据移动到它自己的列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9396605/