【问题标题】:mysql aggregation of table with one value per rowmysql聚合表,每行一个值
【发布时间】:2014-04-19 15:57:08
【问题描述】:

我有这个源表:

源表: ------------------------------ |编号 |第 1 栏 |第 2 栏 |栏目 | ------------------------------ | 0 | 1 |空 |空 | ------------------------------ | 0 |空 | 1 |空 | ------------------------------ | 0 |空 |空 | 1 | ------------------------------ | 1 | 1 |空 |空 | ------------------------------ | 1 |空 |空 | 1 | ------------------------------

在一行中永远不会有两列的值(NULL 除外)。

现在我需要将它转置到这个目标表中:

目标表:

------------------------------ |编号 |第 1 栏 |第 2 栏 |栏目 | ------------------------------ | 0 | 1 | 1 | 1 | ------------------------------ | 1 | 1 |空 | 1 | ------------------------------

我被卡住了,但感觉我错过了一些简单的技巧......?

非常感谢您的帮助!

【问题讨论】:

    标签: mysql aggregation transpose


    【解决方案1】:

    使用MAX()

    SELECT  id, 
            MAX(col1) AS col1, 
            MAX(col2) AS col2, 
            MAX(coln) AS coln
    FROM    sourceTB
    GROUP   BY id
    

    既然你想把它插入到目标表中,你可以像这样简单地构建一个INSERT 语句:

    INSERT  INTO targetTB (id, col1, col2, coln)
    SELECT  id, 
            MAX(col1), 
            MAX(col2), 
            MAX(coln)
    FROM    sourceTB
    GROUP   BY id
    

    【讨论】:

    • thx 4 快速回答。正是我想要的。只是没有想到“外国”使用 max...抱歉 4 打扰了。
    猜你喜欢
    • 2012-12-13
    • 1970-01-01
    • 1970-01-01
    • 2014-12-11
    • 2020-06-03
    • 2019-02-03
    • 2017-06-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多