【发布时间】:2015-07-18 04:00:28
【问题描述】:
我已使用 SSIS 将数据从 XML 文件导入到 SQL Server。
我在数据库中得到的结果是这样的:
+-------+---------+---------+-------+
| ID | Name | Brand | Price |
+-------+---------+---------+-------+
| 2 | NULL | NULL | 100 |
| NULL | SLX | NULL | NULL |
| NULL | NULL | Blah | NULL |
| NULL | NULL | NULL | 100 |
+-------+---------+---------+-------+
我想要的结果是:
+-------+---------+---------+-------+
| ID | Name | Brand | Price |
+-------+---------+---------+-------+
| 2 | SLX | Blah | 100 |
+-------+---------+---------+-------+
在 T-SQL 中是否有一个很好的解决方案来解决这个问题?
我已经用SELECT MAX(ID) 和GROUP BY ID 尝试过,但我仍然坚持NULL 值。我也试过MERGE,但也失败了。
谁能给我一个进一步搜索的方向?
【问题讨论】:
-
您可以在所有列上选择 MAX。根本没有 GROUP BY。
-
我假设这不是表中唯一的 4 行(应该是 1 行)。我首先建议你去 SSIS 并调整它。如果你不能很好,没有什么能真正将这些价值观联系在一起,所以除非你以某种方式将它们联系起来,否则这是不可能的。我能想到的唯一方法是你有一个额外的 row_number INT IDENTITY(1,1) 列。如果我有,我可以给你写一个解决方案。
-
如果您在导入步骤中无法解决问题,那么我建议您使用@JohnnyBell 提供的解决方案转换数据,然后再将其存储到永久表中。
标签: sql-server tsql merge