Sql server 将多行数据移动到其自己的列中
我已经搜索了StackOverflow和google很长一段时间了,还没有找到一个答案,甚至远比我所希望的使用SQL的解决方案更接近。我有一个CSV文件(1个表),它有许多用户的数据。问题是,每个用户都有多个具有多个分数但用户ID相同的行。我想将这些分数移动到它们自己的列中,以显示一行用户的所有数据。如何使用SQL实现这一点 当前布局的示例:Sql server 将多行数据移动到其自己的列中,sql-server,ms-access,Sql Server,Ms Access,我已经搜索了StackOverflow和google很长一段时间了,还没有找到一个答案,甚至远比我所希望的使用SQL的解决方案更接近。我有一个CSV文件(1个表),它有许多用户的数据。问题是,每个用户都有多个具有多个分数但用户ID相同的行。我想将这些分数移动到它们自己的列中,以显示一行用户的所有数据。如何使用SQL实现这一点 当前布局的示例: UserID FNm LNm Measure Score 0001 person one LNF 26 00
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
首先,您需要将excel电子表格加载到SQL Server。 我建议使用SSI,以下是一篇帮助您的文章:
然后,您可以使用@Arvo的方法对值求和这对我来说似乎太过分了,因为我们可以很容易地批量插入CSV文件,而不涉及Excel和SSI。当然,这是可以做到的,我宁愿使用SSI,这就是我建议它的原因