我在SQL server中创建了下面的表:
snapshot_year snapshot_month date customer active inactive old new low high hard soft neutral
2020 2020-12 2020-12 1000216 1 null null null null null null null null
2021 2021-12 2021-12 1000216 1 null null null null null null null null
2020 2020-05 2020-05 1000216 null null null null null null 1 null null
2022 2022-01 2022-01 1000216 1 null null null null null null null null
2020 2020-06 2020-06 1000216 null null null null null null 1 null null
2020 2020-10 2020-10 1000216 null 1 null null null null null null null
2020 2020-09 2020-09 1000216 null null 1 null null null null null null
2021 2021-05 2021-05 1000216 1 null null null null null null null null
2021 2021-04 2021-04 1000216 1 null null null null null null null null
2021 2021-08 2021-08 1000216 null null null 1 null null null null null我的要求是,在每一行中,它必须读取包含1的列,并添加一个名为“段”的新列,其特定列名如下:
snapshot_year snapshot_month date customer Segment active inactive old new low high hard soft neutral
2020 2020-12 2020-12 1000216 active 1 null null null null null null null null
2021 2021-12 2021-12 1000216 active 1 null null null null null null null null
2020 2020-05 2020-05 1000216 hard null null null null null null 1 null null
2022 2022-01 2022-01 1000216 active 1 null null null null null null null null
2020 2020-06 2020-06 1000216 hard null null null null null null 1 null null
2020 2020-10 2020-10 1000216 inactive null 1 null null null null null null null
2020 2020-09 2020-09 1000216 old null null 1 null null null null null null
2021 2021-05 2021-05 1000216 active 1 null null null null null null null null
2021 2021-04 2021-04 1000216 active 1 null null null null null null null null
2021 2021-08 2021-08 1000216 new null null null 1 null null null null null我完全搞不懂该怎么做,帮个忙就好了
发布于 2022-02-15 14:56:41
如果我正确理解,您可以尝试使用CASE WHEN表达式。
如果该值是您希望显示的值,则创建条件判断列。
SELECT *,
CASE WHEN active = 1 THEN 'active'
WHEN inactive = 1 THEN 'inactive'
WHEN old = 1 THEN 'old'
WHEN new = 1 THEN 'new'
WHEN low = 1 THEN 'low'
WHEN high = 1 THEN 'high'
WHEN hard = 1 THEN 'hard'
WHEN soft = 1 THEN 'soft'
WHEN neutral = 1 THEN 'neutral' END Segment
FROM Thttps://stackoverflow.com/questions/71128307
复制相似问题