我想要一个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。
答案 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