针对特定情况的案例表达

时间:2017-10-04 10:41:20

标签: sql

如何根据条件为其他列赋值 像

假设有id 1 3 5和数字列, 如果1

的特定sid存在3101
sid id  number 
101  1    4
101  3    4
101  2    4

sid id number
102 1   4
103 3   12

如果sid存在1和3,则应指定值4

2 个答案:

答案 0 :(得分:0)

你可以使用它。

ivalue

结果:

DECLARE @T TABLE (sid INT, id INT)
INSERT INTO @T VALUES
(101,  1    ),
(101,  3    ),
(101,  2    ),
(102,  1    ),
(103,  3    )

SELECT T1.*, T2.number  FROM @T T1
 INNER JOIN (SELECT sid, ( MIN(id) * 4 ) number 
        FROM @T GROUP BY sid)  T2 ON T1.sid = T2.sid 

答案 1 :(得分:0)

  
    

如果sid同时具有id 1和3,则应将4分配给所有行

  

否则

  
    

如果id为1则应分配4

         

如果id为3,则应将12分配给数字

  

在标准SQL中,您可以使用分析函数查看sid的所有记录,然后决定显示哪个数字。

select
  sid,
  id,
  case when count(case when id = 1 then 1 end) over (partition by sid) > 0
        and count(case when id = 3 then 1 end) over (partition by sid) > 0 then 4
       when id = 1 then 4
       when id = 3 then 12
  end as number
from mytable;