sql-server - 将多行数据移动到它自己的列中

标签 sql-server ms-access

我已经在 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/

相关文章:

sql-server - Django <-> SQL Server 2005,文本编码问题

vba - 使用 XSLT 转换 XML

sql - SQL错误(缺少运算符)查询操作中的错误

sql - Access 查询以查找下一个维护周期

ms-access - 表在日期时间字段上加入 Access 2003

sql-server - SQL Server 为一列创建多个非聚集索引 vs 在一个索引中创建多个列

sql-server - 创建链接 ID

sql - SQL 中结果行集的总和

vba - 在Access 2007中使用ADO还是DAO更好?

sql-server - 通过低带宽 TCP/IP 连接的 SQL 服务器 ADO.NET 有什么提示/经验吗?