首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL -将不同的行组合成一个具有不同ID的行。

SQL -将不同的行组合成一个具有不同ID的行。
EN

Stack Overflow用户
提问于 2022-05-17 03:07:21
回答 1查看 80关注 0票数 0

来自不同id的表需要组合成一行。

代码语言:javascript
运行
复制
        +-----+-----+-----+-----+
        | Id  | Col1| Col2| Col3|
        +-----+-----+-----+-----+
        | 1   |     |   1 |     |
        | 2   |     |   2 |     |
        | 3   |   3 |     |     |
        | 4   |   4 |     |     |
        | 5   |     |     |   5 |
        | 6   |     |     |   6 |
        +-----+-----+-----+-----+

我在同一张桌子上想要达到的目标。

代码语言:javascript
运行
复制
        +-----+-----+-----+-----+
        | Id  | Col1| Col2| Col3|
        +-----+-----+-----+-----+
        | 1   |   3 |   1 |   5 |
        | 2   |   4 |   2 |   6 |
        +-----+-----+-----+-----+

我试图通过使用不同的id来聚合行

代码语言:javascript
运行
复制
Select ID
      ,ID1 = max(Col1)
      ,ID2 = max(Col2)
      ,ID3 = max(Col3)
 From  Tbl
 Group By ID
EN

Stack Overflow用户

回答已采纳

发布于 2022-05-17 05:31:30

你的数据

代码语言:javascript
运行
复制
create table test(
   Id   INTEGER  NOT NULL 
  ,Col1 INTEGER  
  ,Col2 INTEGER
  ,Col3 INTEGER
);
INSERT INTO test
(Id,Col1,Col2,Col3)
VALUES
(1,NULL,1,NULL),
(2,NULL,2,NULL),
(3,3,NULL,NULL),
(4,4,NULL,NULL),
(5,NULL,NULL,5),
(6,NULL,NULL,6);

UNION Max函数与Min函数的结果

代码语言:javascript
运行
复制
SELECT 1         AS ID,
       Min(col1) Col1,
       Min(col2) Col2,
       Min(col3) Col3
FROM   test
UNION
SELECT 2         AS ID,
       Max(col1) Col1,
       Max(col2) Col2,
       Max(col3) Col3
FROM   test  

此外,还可以使用multiple joinSubbqueryWhere条件

代码语言:javascript
运行
复制
SELECT a.id1 AS id,
       b.col1,
       a.col2,
       c.col3
FROM  (SELECT Row_number()
                OVER (
                  ORDER BY id ) id1,
              *
       FROM   Test
       WHERE  col2 IS NOT NULL) a
      JOIN (SELECT Row_number()
                     OVER (
                       ORDER BY id ) id1,
                   *
            FROM   Test
            WHERE  col1 IS NOT NULL) b
        ON a.id1 = b.id1
      JOIN(SELECT Row_number()
                    OVER (
                      ORDER BY id ) id1,
                  *
           FROM   Test
           WHERE  col3 IS NOT NULL) c
        ON a.id1 = c.id1  

[医]小提琴

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72267762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档