--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([名称] nvarchar(23),[完工量] int,[级别] int,[组号] int)
Insert #T
select N'名称1',100,1,7 union all
select N'名称2',80,2,7 union all
select N'名称3',80,3,7 union all
select N'名称4',0,NULL,7 union all
select N'名称5',0,1,8 union all --级别为1但是数量为0则不显示
select N'名称6',80,3,8 union all
select N'名称7',10,NULL,8
Go
--测试数据结束
SELECT a.*
FROM #T a
JOIN ( SELECT DISTINCT
组号
FROM #T b
WHERE b.级别 = 1
AND b.完工量 <> 0
) t ON t.组号 = a.组号
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([名称] nvarchar(23),[完工量] int,[级别] int,[组号] int)
Insert #T
select N'名称1',100,1,7 union all
select N'名称2',80,2,7 union all
select N'名称3',80,3,7 union all
select N'名称4',0,NULL,7 union all
select N'名称6',80,3,8 union ALL --最小组号为3,但数量不为0,则显示出来
select N'名称7',10,NULL,8
Go
--测试数据结束
SELECT * FROM #T WHERE 组号 IN(
SELECT DISTINCT
t.组号
FROM #T a
JOIN ( SELECT MIN(级别) AS 级别 ,
组号
FROM #T b
GROUP BY 组号
) t ON t.级别 = a.级别
AND t.组号 = a.组号
WHERE a.完工量 <> 0)
#1
楼主 用 excel 画一下你的预期结果;
测试数据,多给出一些; 再说一下规律
#2
最好贴出测试数据,查询条件以及要的结果
#3
select * from tab wher 级别=1 and 完工量<>0
#4
SELECT TOP 1 *
FROM table1
WHERE 完工量 <> 100
ORDER BY 级别
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([名称] nvarchar(23),[完工量] int,[级别] int,[组号] int)
Insert #T
select N'名称1',100,1,7 union all
select N'名称2',80,2,7 union all
select N'名称3',80,3,7 union all
select N'名称4',0,NULL,7 union all
select N'名称5',0,1,8 union all --级别为1但是数量为0则不显示
select N'名称6',80,3,8 union all
select N'名称7',10,NULL,8
Go
--测试数据结束
SELECT a.*
FROM #T a
JOIN ( SELECT DISTINCT
组号
FROM #T b
WHERE b.级别 = 1
AND b.完工量 <> 0
) t ON t.组号 = a.组号
#7
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([名称] nvarchar(23),[完工量] int,[级别] int,[组号] int)
Insert #T
select N'名称1',100,1,7 union all
select N'名称2',80,2,7 union all
select N'名称3',80,3,7 union all
select N'名称4',0,NULL,7 union all
select N'名称5',0,1,8 union all --级别为1但是数量为0则不显示
select N'名称6',80,3,8 union all
select N'名称7',10,NULL,8
Go
--测试数据结束
SELECT a.*
FROM #T a
JOIN ( SELECT DISTINCT
组号
FROM #T b
WHERE b.级别 = 1
AND b.完工量 <> 0
) t ON t.组号 = a.组号
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([名称] nvarchar(23),[完工量] int,[级别] int,[组号] int)
Insert #T
select N'名称1',100,1,7 union all
select N'名称2',80,2,7 union all
select N'名称3',80,3,7 union all
select N'名称4',0,NULL,7 union all
select N'名称6',80,3,8 union ALL --最小组号为3,但数量不为0,则显示出来
select N'名称7',10,NULL,8
Go
--测试数据结束
SELECT * FROM #T WHERE 组号 IN(
SELECT DISTINCT
t.组号
FROM #T a
JOIN ( SELECT MIN(级别) AS 级别 ,
组号
FROM #T b
GROUP BY 组号
) t ON t.级别 = a.级别
AND t.组号 = a.组号
WHERE a.完工量 <> 0)