【问题标题】:T-SQL Merging dataT-SQL 合并数据
【发布时间】: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


【解决方案1】:

您可以在所有列上选择MAX....

SELECT MAX(ID), MAX(NAME), MAX(BRAND), MAX(PRICE)
FROM [TABLE]

Click here for a fiddley fidd fiddle...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-21
    • 1970-01-01
    • 1970-01-01
    • 2013-10-15
    • 2011-08-11
    • 1970-01-01
    • 1970-01-01
    • 2012-10-04
    相关资源
    最近更新 更多