【问题标题】:How to JOIN two rows into one row SQL如何将两行合并为一行 SQL
【发布时间】:2022-12-18 13:45:29
【问题描述】:

表格1:

ID | Name | Class |   Date    | Intime | Outtime | INAM| OUTPM

1  | Smith| 1st   |07-12-2022 | 8:30 AM| Null    | P   | Null

1  | Smith| 1st   |07-12-2022 | Null   | 4:30 PM | Null| P

如何将这两行合并为一行。

所需输出:

   ID | Name | Class |   Date    | Intime | Outtime | INAM| OUTPM
    
    1  | Smith| 1st   |07-12-2022 | 8:30 AM| 4:30 PM| P   | P

请有人帮我加入一行。谢谢...

【问题讨论】:

  • 请不要提供进一步的示例数据。对于这两行,您可以只选择每列的最大值。目前还不清楚这是否足以满足整个表格的需要。

标签: sql


【解决方案1】:

您可以按前 4 列汇总并取最后 4 列的最大值:

SELECT ID, Name, Class, Date,
       MAX(Intime) AS Intime, MAX(Outtime) AS Outtime, MAX(INAM) AS INAM,
       MAX(OUTPM) AS OUTPM
FROM yourTable
GROUP BY ID, Name, Class, Date;

【讨论】:

    【解决方案2】:
    SELECT
        FK,
        MAX(Field1) AS Field1,
        MAX(Field2) AS Field2
    FROM
        table1
    GROUP BY
        FK;
    

    我使用了 MAX,但是从 GROUP BY 行中选择一个值的任何聚合都应该有效。

    测试数据:

    CREATE TABLE table1 (FK int, Field1 varchar(10), Field2 varchar(10));
    
    INSERT INTO table1 VALUES (3, 'ABC', NULL);
    INSERT INTO table1 VALUES (3, NULL, 'DEF');
    INSERT INTO table1 VALUES (4, 'GHI', NULL);
    INSERT INTO table1 VALUES (4, 'JKL', 'MNO');
    INSERT INTO table1 VALUES (4, NULL, 'PQR');
    

    结果:

    FK  Field1  Field2
    --  ------  ------
    3   ABC     DEF
    4   JKL     PQR
    

    【讨论】:

    • 数据库中没有字段。
    猜你喜欢
    • 2023-02-19
    • 1970-01-01
    • 1970-01-01
    • 2017-09-24
    • 1970-01-01
    • 1970-01-01
    • 2015-02-08
    • 2021-08-19
    • 2016-07-12
    相关资源
    最近更新 更多