行列转换问题
输入
ID RowID Data
1 1 S
1 1 Q
1 1 L
1 1 Null
1 1 Null
1 1 S
1 1 E
1 1 R
1 1 V
1 1 E
1 1 R
1 1 Null
1 1 DB
1 2 S
1 2 T
1 2 A
1 2 C
1 2 K
2 1 O
2 1 V
2 1 E
2 1 R
2 1 Null
2 1 Null
2 1 Null
2 1 F
2 1 L
2 1 O
2 1 W
预期输出
ID NewData
1 SQL2SERVER1DB,STACK
2 OVER3FLOW
Input
ID RowID Data
1 1 S
1 1 Q
1 1 L
1 1 Null
1 1 Null
1 1 S
1 1 E
1 1 R
1 1 V
1 1 E
1 1 R
1 1 Null
1 1 DB
1 2 S
1 2 T
1 2 A
1 2 C
1 2 K
2 1 O
2 1 V
2 1 E
2 1 R
2 1 Null
2 1 Null
2 1 Null
2 1 F
2 1 L
2 1 O
2 1 W
Expected Output
ID NewData
1 SQL2SERVER1DB,STACK
2 OVER3FLOW
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
保证输出顺序的唯一方法是向表中添加一个定义正确顺序的列 - 我使用了 IDENTITY 列。
我还假设您的示例数据创建脚本中有一个错误(请参阅我对问题的评论) - 修订后的示例数据创建脚本如下:
据我所知,正确聚合
NULL
行并在一个步骤中连接字符串,因此该解决方案使用链式 CTE 一次执行一个步骤。我还使用 CTE 对输出进行重复数据删除(而不是分组)。The only way to guarantee the order of the output is to add an column which defines the correct order to the table - I've used an
IDENTITY
column.I've also assumed that there is a mistake in your sample data creation script (see my comment on the question) - the revised sample data creation script is as follows:
It's not possible, as far as I can see, to correctly aggregate the
NULL
rows and concatenate the strings in a single step, so this solution uses chained CTEs to carry out the steps one at a time. I've also used a CTE to deduplicate the output (rather than grouping).