SQL根据两个原始列之间的一对一或一对多关系创建新列

时间:2020-03-11 02:59:26

标签: sql

我有一个表,其中包含字段idnametypeid可以链接到一个或两个名称,也可以不链接任何名称。如果将id链接到两个名称,则每个名称的type可以是redblue,但不能同时是blue或两者都{ {1}},如下所示。

red

如果id name type 1 null null 2 ai3 red 3 wz2 blue 4 5ef blue 4 l2e red 确实附加有两个名称,我想创建一个名为id的新类别。我不确定如何使用CASE语句来完成此操作。

both

2 个答案:

答案 0 :(得分:1)

使用窗口功能:

select t.*,
       (case when min(type) over (partition by id) <> max(type) over (partition by id)
             then 'both'
             else min(type) over (partition by id)
        end) as cat
from t;

答案 1 :(得分:0)

我相信类似的方法可能会起作用,可能需要进行调整,但这是大多数DataIn语句起作用的方式:

CASE