现有一张表如下: ID Num
1 1
1 0
2 0
2 0
3 0
3 0现在问题是,上面ID分别2条为一组,我想筛选出当同一组ID中,Num的值 同时都等于0的那个ID,
即上面结果最张需要输出来 ID Num
2 0
2 0
3 0
3 0请问SQL语句应该如何写呢?所有数据是动态产生,所以不能写死条件的,谢啦!
1 1
1 0
2 0
2 0
3 0
3 0现在问题是,上面ID分别2条为一组,我想筛选出当同一组ID中,Num的值 同时都等于0的那个ID,
即上面结果最张需要输出来 ID Num
2 0
2 0
3 0
3 0请问SQL语句应该如何写呢?所有数据是动态产生,所以不能写死条件的,谢啦!
IF OBJECT_ID('TEMPDB.DBO.#tb') IS NOT NULL DROP TABLE #tb
GO
CREATE TABLE #tb([ID] INT,[Num] INT)
INSERT #tb
SELECT 1,1 UNION ALL
SELECT 1,0 UNION ALL
SELECT 2,0 UNION ALL
SELECT 2,0 UNION ALL
SELECT 3,0 UNION ALL
SELECT 3,0
--------------开始查询--------------------------SELECT * FROM #tb AS t WHERE NOT EXISTS(SELECT 1 FROM #tb WHERE [ID]=t.[ID] AND [Num]=1)
----------------结果----------------------------
/*
*
ID Num
2 0
2 0
3 0
3 0
*
*/
from TB
where ID in (
select ID
from TB
where num=0
group by ID
having COUNT(1)>1)
--INSERT INTO #tb
--SELECT 1 ,1
--UNION ALL
--SELECT 1, 0
--UNION ALL
--SELECT 2, 0
--UNION ALL
--SELECT 2, 0
--UNION ALL
--SELECT 3, 0
--UNION ALL
--SELECT 3, 0
SELECT * FROM #tb
WHERE id IN (
SELECT id
FROM #tb
GROUP BY id
HAVING SUM(num)=0)/*
ID Num
----------- -----------
2 0
2 0
3 0
3 0
*/
这个我换成别的 就不好使了 不过还是谢谢你。