none
请教一个sql语句 RRS feed

  • 问题

  • sql语句如下:

    create table #t
    (
    	c1 int,
    	c2 varchar(5),
    	c3 varchar(5)
    )
    insert into #t values(1,'aaa','sfada')
    insert into #t values(2,'aaa','asdw')
    insert into #t values(3,'aaa','edfb')
    insert into #t values(4,'qqq','sfasf')
    insert into #t values(5,'qqq','bner')
    insert into #t values(6,'bbb','vfsxv')
    
    select *,count(*) from #t group by c2
    我想得到这样的结果,c2列如果相同,显示一次就可以了。但是使用这样的语句,老是报错:
    选择列表中的列 '#t.c1' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。
    不知道怎么弄了
    郭鹏
    2010年3月8日 13:57

答案

  • SELECT  A.*, B.Count
    	FROM  #t A
        INNER JOIN (SELECT  c2, COUNT(1) Count FROM #t GROUP BY c2) B  ON A.c2 = B.c2
    	WHERE NOT EXISTS ( SELECT 1 FROM #t WHERE  c2 = A.c2 AND c1 < A.c1 )

    知识改变命运,奋斗成就人生!
    • 已标记为答案 Hugo12345 2010年3月10日 15:56
    2010年3月9日 1:42
    版主

全部回复

  • 顶一下,为什么没人理我呢


    郭鹏
    2010年3月8日 14:34
  • sql语句如下:

    create table #t
    
    (
    
    	c1 int,
    
    	c2 varchar(5),
    
    	c3 varchar(5)
    
    )
    
    insert into #t values(1,'aaa','sfada')
    
    insert into #t values(2,'aaa','asdw')
    
    insert into #t values(3,'aaa','edfb')
    
    insert into #t values(4,'qqq','sfasf')
    
    insert into #t values(5,'qqq','bner')
    
    insert into #t values(6,'bbb','vfsxv')
    
    
    
    select *,count(*) from #t group by c2
    
    
    我想得到这样的结果,c2列如果相同,显示一次就可以了。但是使用这样的语句,老是报错:
    选择列表中的列 '#t.c1' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。
    不知道怎么弄了 
    
    郭鹏
    
    
    create table #t
    (
    	c1 int,
    	c2 varchar(5),
    	c3 varchar(5)
    )
    
    insert into #t values(1,'aaa','sfada')
    insert into #t values(2,'aaa','asdw')
    insert into #t values(3,'aaa','edfb')
    insert into #t values(4,'qqq','sfasf')
    insert into #t values(5,'qqq','bner')
    insert into #t values(6,'bbb','vfsxv')
    
    
    
    select c1,c2,c3,counts from 
    (select MIN(c1) as c1,c2,min(c3) as c3,count(1) as counts from #t
    group by c2)aa
    结果
    1 aaa asdw 3
    6 bbb vfsxv 1
    4 qqq bner 2

    山东海天软件工程专修学院 计算机白领的黄埔军校 http://college.haitian.com.cn
    2010年3月9日 1:29
  • 是上面的意思吗?没有太看明白,你应将结果显示出来。


    山东海天软件工程专修学院 计算机白领的黄埔军校 http://college.haitian.com.cn
    2010年3月9日 1:30
  • SELECT  A.*, B.Count
    	FROM  #t A
        INNER JOIN (SELECT  c2, COUNT(1) Count FROM #t GROUP BY c2) B  ON A.c2 = B.c2
    	WHERE NOT EXISTS ( SELECT 1 FROM #t WHERE  c2 = A.c2 AND c1 < A.c1 )

    知识改变命运,奋斗成就人生!
    • 已标记为答案 Hugo12345 2010年3月10日 15:56
    2010年3月9日 1:42
    版主