查找电缆中所有列中存在的值

时间:2017-04-25 11:26:16

标签: sql sql-server

我想要一个SQL Server查询,它在一个填充多列的单元格中查找值。例如,如果我有表

 ID     Value1    Value2     Value3
 1        2        NULL      NULL 
 1       NULL      3         NULL 
 1       NULL      NULL       4
 1       3.4       NULL      NULL 
 2       NULL      3         NULL
 2       NULL      NULL      NULL
 3       NULL      NULL       91

如上表所示,一次只能填充2列(第一个是ID,第二个是Value1,2或3),ID可以重复多次。

我想将ID仅返回1,因为1是填充所有其他三列的唯一ID。 2仅填充Value2,第二次迭代2的所有其他值均为NULL,其中3仅存在于Column Value3中。在某种程度上,我可以找到填充所有其他列的Id。

我很乐意在没有光标的情况下这样做,但如果必须的话,我可以去光标。感谢

修改

所需表:

ID 1

Statement只应返回填充所有其他列的过滤ID。

2 个答案:

答案 0 :(得分:4)

试试这个

SELECT id, 
FROM TableName
GROUP BY id
HAVING MAX(value1) IS NOT NULL AND 
       MAX(value2) IS NOT NULL AND
       MAX(value3) IS NOT NULL

答案 1 :(得分:1)

如果您想要更少的代码行,可以试试:

select ID from dbo.Table_1  group by ID having count(Value1) > 0 AND count(Value2) > 0 AND count(Value3) >  0