簡體   English   中英

如何將共享一個相同值的多行折疊成一行 PRESTO SQL

[英]How do I collapse multiple rows that shares one identical value into a single row PRESTO SQL

我有這張桌子

ID cnt1 cnt2
7775 1個
7775 2個

我想把這些行合並起來,這樣就可以了

ID cnt1 cnt2
7775 1個 2個

我試過自連接,但它只將行附加到底部。 有任何想法嗎? 謝謝你!

使用SubQuery並按如下方式join

SELECT T1.Id,
       Cnt1,
       Cnt2
FROM   (SELECT Id,
               Cnt1
        FROM   Table
        WHERE  Cnt1 IS NOT NULL) T1
       JOIN (SELECT Id,
                    Cnt2
             FROM   Table
             WHERE  Cnt2 IS NOT NULL) T2
         ON T1.Id = T2.Id  

根據所需的邏輯,您可以使用group by id和相應的聚合function,例如max (或sum ),這將忽略 null 值。

-- sample data
WITH dataset (id, cnt1, cnt2) AS (
    VALUES (7775, 1, null),
        (7775, null, 2)
) 

-- query
select id,
    max(cnt1) cnt1,
    max(cnt2) cnt2
from dataset
group by id

Output:

ID cnt1 cnt2
7775 1個 2個

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM