繁体   English   中英

每个 ID 的唯一行,不同列中有多个记录

[英]Unique row per ID with multiple records in different columns

我有 2 个表,其中包含有关唯一 ID 的不同产品使用信息,并且我正在尝试获取一个表,其中每个 ID 每月有一行包含所有产品使用信息。

ID prod1_usage
2021-01-01 001 300
2021-02-01 001 400
2021-01-01 002 100
2021-02-01 002 50
ID prod2_usage
2021-01-01 001 600
2021-02-01 001 880
2021-01-01 002 150
2021-02-01 002 10

我想要得到的结果是:| 月 | 编号 | prod1_usage | prod2_usage | |:----: |:-----:|:------:|:-----:| | 2021-01-01 | 001 | 300 | 600 | | 2021-02-01 | 001 | 400 | 880 | | 2021-01-01 | 002 | 100 | 150 | | 2021-02-01 | 002 | 50 | 10 |

我尝试为一般使用创建一列,为 usage_type 创建另一列,这样我以后可以 pivot 它,但它没有用(product2 使用没有显示)...

SELECT

    month,
    id,
    CASE WHEN prod1_usage IS NOT NULL THEN prod1_usage
         WHEN prod2_usage IS NOT NULL THEN prod2_usage
         END AS usage,
    CASE WHEN prod1_usage IS NOT NULL THEN 'product 1'
         WHEN prod2_usage IS NOT NULL THEN 'procut 2'
         END AS prod_type,
    FROM product1_base a
         LEFT JOIN product2_base b ON a.id=b.id AND a.month = b.month

有人可以帮我出去吗? 提前致谢!

只需加入两个表:

with prod1_table as (
    select date '2021-01-01' as month, '001' as id, 300 as prod1_usage union all 
    select '2021-02-01', '001', 400 union all
    select '2021-01-01', '002', 100 union all
    select '2021-02-01', '002', 50
),
prod2_table as (
    select date '2021-01-01' as month, '001' as id, 600 as prod2_usage union all 
    select '2021-02-01', '001', 880 union all
    select '2021-01-01', '002', 150 union all
    select '2021-02-01', '002', 10
)
select month, id, prod1_usage, prod2_usage
from prod1_table join prod2_table using (month, id)

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM