有一张table
1001 vsp,science,BBA 25-05-2020
1001 vsp,Maths,Btech 26-05-2020
1001 vsp,Maths,Btech 27-05-2020
1002 hyd,science,BBA 24-05-2020
1002 blr,Maths,Btech 25-05-2020
我想要
1001 vsp,science,bba vsp,Maths,Btech vsp,Maths,Btech
有一张table
1001 vsp,science,BBA 25-05-2020
1001 vsp,Maths,Btech 26-05-2020
1001 vsp,Maths,Btech 27-05-2020
1002 hyd,science,BBA 24-05-2020
1002 blr,Maths,Btech 25-05-2020
我想要
1001 vsp,science,bba vsp,Maths,Btech vsp,Maths,Btech
2条答案
按热度按时间uinbv5nw1#
你需要一个我最喜欢的组合来实现你的目标:
cte(创建适当的子请求):https://docs.microsoft.com/en-us/sql/t-sql/queries/with-common-table-expression-transact-sql
行号(为您的行排序):https://docs.microsoft.com/en-us/sql/t-sql/functions/row-number-transact-sql
透视(透视结果):https://docs.microsoft.com/en-us/sql/t-sql/queries/from-using-pivot-and-unpivot
现在解决方案是:
结果如下:
我使用以下代码声明表:
8yoxcaq72#
只需将条件聚合用于
row_number()
:这与字符串聚合无关。它也不需要过多的子查询和cte。