Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 将多行数据移动到其自己的列中_Sql Server_Ms Access - Fatal编程技术网

Sql server 将多行数据移动到其自己的列中

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

我已经搜索了StackOverflow和google很长一段时间了,还没有找到一个答案,甚至远比我所希望的使用SQL的解决方案更接近。我有一个CSV文件(1个表),它有许多用户的数据。问题是,每个用户都有多个具有多个分数但用户ID相同的行。我想将这些分数移动到它们自己的列中,以显示一行用户的所有数据。如何使用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

首先,您需要将excel电子表格加载到SQL Server。 我建议使用SSI,以下是一篇帮助您的文章:


然后,您可以使用@Arvo的方法对值求和

这对我来说似乎太过分了,因为我们可以很容易地批量插入CSV文件,而不涉及Excel和SSI。当然,这是可以做到的,我宁愿使用SSI,这就是我建议它的原因