Sql 如何将多个case语句的结果存储在不同的列中(原始表中不存在)?

Sql 如何将多个case语句的结果存储在不同的列中(原始表中不存在)?,sql,postgresql,Sql,Postgresql,我试图查询一个具有(用户id、分段id、日期)的表,以创建如下新表: 所以我在想这样的事情,但它不起作用: WITH Temp_seg as SELECT user_id, Segment1, Segment2, Segment3, Segment4, Segment5, Segment6, Segment7, Segment8, Segment9, Segment10 (select user_id, (case when segment_id in (1) then "Y

我试图查询一个具有(用户id、分段id、日期)的表,以创建如下新表:

所以我在想这样的事情,但它不起作用:

WITH Temp_seg as
SELECT
user_id, 
Segment1,
Segment2,
Segment3,
Segment4,
Segment5,
Segment6,
Segment7,
Segment8,
Segment9,
Segment10


(select 
user_id,
(case when segment_id in (1) then "Yes" else empty end) Segment1,
(case when segment_id in (2) then "Yes" else empty end) Segment2,
(case when segment_id in (3) then "Yes" else empty end) Segment3,
(case when segment_id in (4) then "Yes" else empty end) Segment4,
(case when segment_id in (5) then "Yes" else empty end) Segment5,
(case when segment_id in (6) then "Yes" else empty end) Segment6,
(case when segment_id in (7) then "Yes" else empty end) Segment7,
(case when segment_id in (8) then "Yes" else empty end) Segment8,
(case when segment_id in (9) then "Yes" else empty end) Segment9,
(case when segment_id in (10) then "Yes" else empty end) Segment10,

from Segments 
where date = last_7_days
and segment_id in (1,2,3,4,5,6,7,8,9,10)
group by user_id
有人能帮我吗?
谢谢

我不确定这是否是您需要的:

select user_id
       , max(case when segmentd_id = 1 then 'Yes' end) Segment1
       , max(case when segmentd_id = 2 then 'Yes' end) Segment2
       , max(case when segmentd_id = 3 then 'Yes' end) Segment3
from segments
group by user_id
order by user_id
下面是一个演示:

如果需要添加where caluse以仅过滤过去7天的数据,则可以使用以下方法:

select user_id
       , max(case when segmentd_id = 1 then 'Yes' end) Segment1
       , max(case when segmentd_id = 2 then 'Yes' end) Segment2
       , max(case when segmentd_id = 3 then 'Yes' end) Segment3
from segments
where date_c >= CURRENT_DATE -7
group by user_id
order by user_id

我删除了不一致的数据库标记。请仅使用您真正使用的数据库进行标记。对逻辑进行清晰的解释也会有所帮助。我使用的是postgresql,逻辑是在segment_id中有1到10的值,我需要一个新的表键入用户id,其中对于每个用户,我在其所属的每列上标记yes。这有意义吗?谢谢你,这正是我想要的!!