【问题标题】:Combine Rows in Access SQL where fields are blank在 Access SQL 中合并字段为空白的行
【发布时间】:2015-11-30 16:51:13
【问题描述】:

我一直在寻找将多行信息组合成一行来填补空白。

Id | name | value1 | value2 | value3
1    bob      3                                                              
1    bob                        6
1    bob               B

如何将这 3 行合并为一行?已确认它们完全适合空白值所在的位置,没有值会重叠。

Id | name | value1 | value2 | value3
1    bob      3        B        6

在我的研究中,除了我无法修改以适应我的需要的名为 ConcatRelated 的东西之外,我没有发现任何有用的东西。我还尝试了一个 group by 声明,我也无法开始工作。有任何想法吗?一般来说,我对 Access 和 SQL 比较陌生。

【问题讨论】:

    标签: sql ms-access group-by union


    【解决方案1】:

    如何将这 3 行合并为一行?

    使用GROUP BY 查询将 3 个“bob” 行合并为一个。然后您可以包含一个聚合函数,例如 Max() 来检索每个 valueX 列的非空白行。

    SELECT
        y.Id,
        y.name,
        Max(y.value1) AS MaxOfvalue1,
        Max(y.value2) AS MaxOfvalue2,
        Max(y.value3) AS MaxOfvalue3
    FROM YourTable AS y
    GROUP BY
        y.Id,
        y.name;
    

    如果您想重用原始列名 valueX,而不是 MaxOfvalueX 别名,请将该名称括在方括号中...

    Max(y.value1) AS [value1]
    

    【讨论】:

    • 感谢您的回答,问题是我在这里使用模拟数据作为示例。如果字段值包含非数字,则 Max() 函数实际上不起作用,对吗?就像 value2 是“B”而不是数字一样。也许我错了。
    • 你说得对,我一开始写错了。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2013-11-07
    • 1970-01-01
    • 2014-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多