if object_id('[TB]') is not null drop table [TB]
go
create table [TB] (字段A int,字段B int,字段C int,字段D int,字段E int)
insert into [TB]
select 1,1,1,0,0 union all
select 2,1,1,2,2 union all
select 3,1,1,2,3 union all
select 4,1,1,0,0 union all
select 5,1,1,2,2 union all
select 6,1,1,4,4select * from [TB];WITH TT
AS(
SELECT ROW_NUMBER() OVER(PARTITION BY 字段D,字段E ORDER BY 字段A) AS NO,*
FROM dbo.TB)SELECT 字段A ,字段B ,字段C,字段D ,字段E  FROM TT WHERE no =1/*
字段A 字段B 字段C 字段D 字段E
1 1 1 0 0
2 1 1 2 2
3 1 1 2 3
6 1 1 4 4*/

解决方案 »

  1.   

    先谢谢你,能不能把SQL语句写下呢?
      

  2.   

    先谢谢你,能不能把SQL语句写下呢?什么意思?这个不是sql语句吗?
      

  3.   

    先谢谢你,能不能把SQL语句写下呢?装个个语句就对,还要怎么写?
      

  4.   

    他的SQL语句是这个:
    select * from [TB];WITH TT AS( SELECT ROW_NUMBER() OVER(PARTITION BY 字段D,字段E ORDER BY 字段A) AS NO,* FROM dbo.TB)
    吗? 
      

  5.   

    SELECT * FROM TB是为了展示为处理前的数据,真正的代码从;WITH开始,那个是制造临时数据集,供后面使用
      

  6.   

    ;WITH TT
    AS(
    SELECT ROW_NUMBER() OVER(PARTITION BY 字段D,字段E ORDER BY 字段A) AS NO,*
    FROM dbo.TB)
     
    SELECT 字段A ,字段B ,字段C,字段D ,字段E  FROM TT WHERE no =1--这里的TT就是上面生成的结果,你完全可以用临时表或者表变量来替代,仅限你这里的例子
      

  7.   

    先谢谢你,能不能把SQL语句写下呢?都写在这儿了哦。 --《《《《《《《
      

  8.   

    如果用到group by 就需要用聚合函数,否则肯定报错。
    如果with不好理解,那就这样写吧select * from (
    SELECT ROW_NUMBER() OVER(PARTITION BY 字段D,字段E ORDER BY 字段A) AS sn,*
    FROM dbo.TB) tt where tt.sn=1
      

  9.   


    create table ca
    (字段A int,字段B int,字段C int,字段D int,字段E int)insert into ca
     select 1,1,1,0,0 union all
     select 2,1,1,2,2 union all
     select 3,1,1,2,3 union all
     select 4,1,1,0,0 union all
     select 5,1,1,2,2 union all
     select 6,1,1,4,4
     -- SQL语句
    select * 
     from ca a
     where not exists
     (select 1 from ca b 
      where b.字段A<a.字段A and b.字段D=a.字段D and b.字段E=a.字段E)-- 结果
    /*
    字段A         字段B         字段C         字段D         字段E
    ----------- ----------- ----------- ----------- -----------
    1           1           1           0           0
    2           1           1           2           2
    3           1           1           2           3
    6           1           1           4           4(4 row(s) affected)
    */