我有一个名为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
有什么想法吗?
答案 0 :(得分:4)
我倾向于使用条件聚合来解决这些问题。问题是你没有"行号"用于分类。在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中做类似的事情,但它看起来很不一样。