首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

请问一条SQL语句,怎么分组筛选

2012-12-17 
请教一条SQL语句,如何分组筛选?现有一张表如下: ID Num1 11 02 02 03 03 0现在问题是,上面ID分别2条为一组

请教一条SQL语句,如何分组筛选?
现有一张表如下:

 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语句应该如何写呢?所有数据是动态产生,所以不能写死条件的,谢啦!
[最优解释]

--> 测试数据:#tb
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)
----------------结果----------------------------
/* 

IDNum
20
20
30
30

*/

[其他解释]
select * 
from TB 
where ID in (
select ID
from TB 
where num=0
group by ID
having  COUNT(1)>1)

[其他解释]
select * from tb where id in(select id from tb where num=0 group by id having count(1)>1)
[其他解释]
select * from tb group by id,num having count(1)>1
[其他解释]
select * from tb where num=0 group by id,num having count(1)>1
[其他解释]
--CREATE TABLE #tb (ID INT, Num INT )
--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
*/

[其他解释]
太阳哦,一下子那么多人回复了
[其他解释]
引用:
SQL code
--CREATE TABLE #tb (ID INT, Num INT )
--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……


SUM(num)=0 
这个我换成别的 就不好使了 不过还是谢谢你。

热点排行