SQL语句不知道该怎么写,在线求解。
问题我都不知道该怎么描述
是这样的。我从数据库的一张表里面,取一些数据出来,分别是列1 列2 列3 列4列5,为了去掉重复的,我GROUP BY 了。还使用WHERE做了一些筛选。其中列5是由时间类型转换来的日期--CONVERT(varchar(10),DATE_TIME_STAMP,120)
现在我想在后面加一列,列6,列6的值为同一天(列5)内,不重复的列4的数量--count(distinct 列4).比如昨天三月5号,在这一天,不重复的列4的数量为100,那么,每条列5的值为3月5号的记录的列6的值 都应该是100请问这个语句  应该怎么个写法子??

解决方案 »

  1.   


    declare @t table 
    (c1 int,c2 varchar(1),c3 varchar(1),c4 varchar(1),c5 varchar(10))
    insert into @t
    select 1,'a','h','a','2012-01-01' union all
    select 2,'b','i','a','2012-01-01' union all
    select 3,'c','j','b','2012-01-02' union all
    select 4,'d','k','b','2012-01-02' union all
    select 5,'e','l','c','2012-01-02'--假设这是你现在的结果
    select * from @t
    /*
    c1          c2   c3   c4   c5
    ----------- ---- ---- ---- ----------
    1           a    h    a    2012-01-01
    2           b    i    a    2012-01-01
    3           c    j    b    2012-01-02
    4           d    k    b    2012-01-02
    5           e    l    c    2012-01-02
    */--貌似这个就是你想要的结果了
    select *,(select count(distinct c4) from @t where c5=t.c5)  as c6 from @t t
    /*
    c1          c2   c3   c4   c5         c6
    ----------- ---- ---- ---- ---------- -----------
    1           a    h    a    2012-01-01 1
    2           b    i    a    2012-01-01 1
    3           c    j    b    2012-01-02 2
    4           d    k    b    2012-01-02 2
    5           e    l    c    2012-01-02 2
    */
      

  2.   


    恩 就是这样的  谢谢。。因为急着要,所以自己用了一个笨方法,原理和这个一样。我把一开始选出来的5列的结果导出为EXCEL ,然后再导到测试库,建一张表,然后
    select *,(select count(distinct c4) from TB1 where c5=t.c5)  as c6 from TB1 t
    ................