各位,我想把数据库中null和空分组的时候分到一个组里进行计数,有什么方法么?谢谢

解决方案 »

  1.   

    sum(case when len(isnull(col,''))=0 then 1 else 0 end)
      

  2.   

    case when col is null then '' else col end
      

  3.   

    不好意思,没说清楚,下面是我的查询语句:select MIN([BeTime]) AS [FIRSTTIME]
    ,case when [ZJHM] is null or [ZJHM]='' then 'NULL' else [ZJHM] end as [ZJHM]
    ,COUNT(isnull([ZJHM],0)) AS [HRCS]
    ,Round(AVG(Convert(Float,[DDSC])),2) AS [PJDDSC]
    ,Round(AVG(Convert(Float,[ZLSC])),2) AS [PJZLSC]
    ,Round(AVG(Convert(Float,[THSC])),2) AS [PJTHSC]
    FROM Tran_CompleteRecord 
    GROUP BY [ZJHM] ORDER BY [HRCS] DESC,[FIRSTTIME] ASC
    现在的结果是[ZJHM]字段产生了两个NULL值,我是想如何把它们合并在一起计数,不改动表的源数据
      

  4.   

    给点数据看看怎么会有2个null 
      

  5.   

    数据库里的值有null类型和空值两种,case when [ZJHM] is null or [ZJHM]='' then 'NULL' else [ZJHM] end as [ZJHM]把这两种情况都赋值为“NULL”,Group By的时候认为null和空值是不同的类型,所以把这两种分别计数了,以下是部分查询结果:2007-02-01 09:05:00.000 82611569 166 4.69 3.2 29.07
    2007-02-01 01:30:00.000 NULL         132 5.01 1.77 10.13
    2007-02-01 08:19:00.000 031186268099 53 5.49 3.13 3.75
    2007-02-01 04:02:00.000 13366177380 43 8.86 2.86 19.35
    2007-02-01 15:52:00.000 NULL         38 7 9 52.5
      

  6.   

    --> 测试数据: @tb
    declare @tb table (BeTime datetime,zjhm varchar(12),c3 int,c4 numeric(3,2),c5 numeric(3,2),c6 numeric(4,2))
    insert into @tb
    select '2007-02-01 09:05:00.000','82611569',166,4.69,3.2,29.07 union all
    select '2007-02-01 01:30:00.000',null,132,5.01,1.77,10.13 union all
    select '2007-02-01 08:19:00.000','031186268099',53,5.49,3.13,3.75 union all
    select '2007-02-01 04:02:00.000','13366177380',43,8.86,2.86,19.35 union all
    select '2007-02-01 15:52:00.000',null,38,7,9,52.5select MIN([BeTime]) AS [FIRSTTIME] 
    ,case when [ZJHM] is null or [ZJHM]='' then 'NULL' else [ZJHM] end as [ZJHM] 
    ,COUNT(isnull([ZJHM],0)) AS [HRCS] 
    /*,Round(AVG(Convert(Float,[DDSC])),2) AS [PJDDSC] 
    ,Round(AVG(Convert(Float,[ZLSC])),2) AS [PJZLSC] 
    ,Round(AVG(Convert(Float,[THSC])),2) AS [PJTHSC] 
    */
    FROM @tb
    GROUP BY [ZJHM] --ORDER BY [HRCS] DESC,[FIRSTTIME] ASC FIRSTTIME               ZJHM         HRCS
    ----------------------- ------------ -----------
    2007-02-01 01:30:00.000 NULL         2        只有1个null 没有你说的2个
    2007-02-01 08:19:00.000 031186268099 1
    2007-02-01 04:02:00.000 13366177380  1
    2007-02-01 09:05:00.000 82611569     1(4 行受影响)
      

  7.   

    数据库里的数据不是这样的,我说的null在数据库里显示的是“null”样子的字段,空值是看不到任何东西的字段,这两种能不能在Group By的时候分到一个组里