小编noa*_*ahC的帖子

尝试在特定条件下将行合并为一行

给定2个或更多行选择合并,其中一行被识别为模板行.其他行应将其数据合并到模板具有的任何空值列中.

示例数据:

Id  Name     Address          City          State   Active  Email             Date
1   Acme1    NULL             NULL          NULL    NULL    blah@yada.com     3/1/2011
2   Acme1    1234 Abc Rd      Springfield   OR      0       blah@gmail.com    1/12/2012
3   Acme2    NULL             NULL          NULL    1       blah@yahoo.com    4/19/2012
Run Code Online (Sandbox Code Playgroud)

假设用户选择了Id 1作为模板行的行,而Ids 2和3的行将合并到行1中然后删除.行Id 1中的任何空值列应填充(如果存在)最近的(请参见日期列)非空值,并且行Id 1中已存在的非空值将保持原样.对上述数据的查询结果应该是这样的:

Id  Name     Address          City          State   Active  Email             Date
1   Acme1    1234 Abc Road    Springfield   OR      1       blah@yada.com     3/1/2011
Run Code Online (Sandbox Code Playgroud)

请注意,Active值为1,而不是0,因为行Id 3具有最新日期.

PS此外,有没有任何方法可以做到这一点,而无需事先明确定义/知道所有列名称是什么?我正在使用的实际表格有很多列,新的列一直在添加.有没有办法查找表中的所有列名,然后使用该子查询或temptable来完成这项工作?

sql t-sql sql-server sql-server-2008-r2

5
推荐指数
1
解决办法
4078
查看次数

标签 统计

sql ×1

sql-server ×1

sql-server-2008-r2 ×1

t-sql ×1