c# - SQL将行转换为没有数据透视表的列

标签 c# sql sql-server pivot

我有一个名为 STUDENTS 的表,其中列 (LNAME, FNAME, PROGRAM) 都是 VARCHAR。以下是使用 MS SQL Server 2014 添加值的初始结果:

TABLE STUDENTS:

LNAME-------FNAME-------PROGRAM

LEGEND-----MARK--------------IT

SANCHEZ----ERIC---------------IT

RHODES-----JOHN--------------CS

YOUNG-------ART----------------CS

SPARKS------CATH--------------IS

BATUM--------TIM------------------IS

我希望我的表格看起来像这样:

IT-----------------------------------------CS-----------------------------------------IS

LEGEND,MARK---------------RHODES,JOHN-----------------------SPARKS,CATH

SANCHEZ,ERIC-----------------YOUNG,ART-----------------------------BATUM,TIM

有什么想法吗?

最佳答案

我倾向于使用条件聚合来解决这些问题。问题是您没有用于排序的“行号”。在 SQL Server(和大多数其他数据库)中,您可以使用 row_number():

select max(case when program = 'IT' then lname + ',' + fname end) as prog_it,
       max(case when program = 'CS' then lname + ',' + fname end) as prog_cs,
       max(case when program = 'IS' then lname + ',' + fname end) as prog_is       
from (select s.*,
             row_number() over (partition by program order by (select null)) as seqnum
      from students s
     ) s
group by seqnum;

你可以在 MySQL 中做类似的事情,但它看起来很不一样。

关于c# - SQL将行转换为没有数据透视表的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28793394/

相关文章:

sql-server - AzureSQL-安装 Sitecore9.1 时找不到存储过程 'sp_configure'

c# - Active Directory - 获取多个广告组中的所有用户

c# - AJAX调用部分 View

c# - 如何将小工具集成到我的 .NET 应用程序中

mysql - 用于查找属于某个类别的一组数据的媒体的 SQL 查询

sql - 如何从 Postgres 中的选择查询更新多个项目?

sql - 在sql server中使用LIKE通配符进行查询

sql - 如何为 MSSQL2000 进行 SQL 查询 "you are better than XX percent of other users"

c# - HttpClient不报告从Web API返回的异常

c# - 在 asp.net (C#) 的 SQL 查询中使用变量