将多个Row Data移动到自己的Column中

时间:2012-02-22 14:21:25

标签: sql-server ms-access

我已经搜索了StackOverflow和google很长一段时间了,甚至无法使用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 

2 个答案:

答案 0 :(得分:5)

首先,将所有记录按原样插入某个临时表中。 其次,将组合数据插入到所需的表中;选择部分是关于:

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

答案 1 :(得分:0)

首先,您需要将Excel电子表格加载到SQL Server。 我建议使用SSIS,这是一篇文章来帮助你:

http://www.techrepublic.com/blog/datacenter/how-to-import-an-excel-file-into-sql-server-2005-using-integration-services/205

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