![](/img/trans.png)
[英]How to concatenate multiple columns values into a single value per unique row
[英]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.