2017-03-10 77 views
-4

我想建立一个查询将返回只有phase_ids包含level_id BOTH 数字空值包含数字和空值

在下面的示例SQL服务器分组的结果我期望返回phase_id 1,3

DECLARE @tbl TABLE 
(phase_id numeric(10,0) null, 
type_id numeric(10,0) null, 
level_id numeric(10,0) null) 

INSERT @tbl VALUES (1,1,1) 
INSERT @tbl VALUES (1,2,1) 
INSERT @tbl VALUES (1,5,2) 
INSERT @tbl VALUES (1,1,5) 
INSERT @tbl VALUES (1,1,NULL) 
INSERT @tbl VALUES (2,1,2) 
INSERT @tbl VALUES (2,3,6) 
INSERT @tbl VALUES (2,1,1) 
INSERT @tbl VALUES (3,1,6) 
INSERT @tbl VALUES (3,1,NULL) 

SELECT * FROM @tbl 

谢谢

+3

您之前尝试的查询? –

+0

我试过HAVING COUNT,但我不知道如何区分level_id数字或者空值 – PanosPlat

+0

将'INSERT @tbl VALUES(4,1,NULL)'添加到样本表数据,并且可能调整预期结果。 – jarlh

回答

3

count(*)计数所有行,count(level_id)计数非空行:

select phase_id 
from tbl 
group by phase_id 
having count(*) <> count(level_id) 
    and count(level_id) > 0