我有下面这样一个sqlselect startdate,enddate from test1 group by startdate
在sql server 2005里提示报错,说enddate不是group by 里也不在聚合函数里,我要的效果很简单就是根据startdate分组然后enddate直接显示出来,这个要怎么改?

解决方案 »

  1.   

    根据startdate分组然后enddate直接显示出来----
    如果一个startdate对应多个enddate的话,怎么显示
    全部显示不重复的记录,可以这样写
    select startdate,enddate from test1 group by startdate,enddate
      

  2.   

    select startdate,enddate from test1 group by startdate,enddate
      

  3.   


    如果你要根据一个分组,选另一个的最大或最小可以:
    select startdate,max(enddate) as enddate
    from test1 
    group by startdate--不过日期字段貌似没直接group by的,都是结合convert或datepart等使用的。
      

  4.   

    SELECT
        startdate,
        enddate
    FROM
        test1
    GROUP BY --group by中的列必须包含select中的列(聚合统计列除外)
        startdate,
        enddate
      

  5.   

    select startdate,enddate from test1 group by startdate,enddate
      

  6.   

    select startdate,max(enddate)  from test1 group by startdate
      

  7.   

    问题是我不想要用max或者是min来得到enddate,因为这样有可能拿到的日期会不对,比如说我的下面这个贴子
    http://topic.csdn.net/u/20110518/22/25bdae13-b21d-4dbb-97ea-e57ac9fad97c.html拿到会议室的数据,如果已经过期的会议室记录的结束时间比最近的一条记录的结束时间小的话,用min可能会拿到过期的数据
      

  8.   

    我用来做测试的是mysql数据库,人家不管别名什么的都可以group by,转换成sql server就报错
      

  9.   

    列出在指定 starttime 下的 endtime,是用不着分组的.group by 是用来进行分组统计,如求平均值,和,最大,最小等统计值时才要用 group by 分组,只是列出,不进行统计计算,不要加 group by 子句.
      

  10.   

    mysql 也要遵循基本的 SQL 语法,也不是可以随便加 group by 子句的.
      

  11.   

    select startdate,(select max(enddate) from test1) as enddate
     from test1 group by startdate