繁体   English   中英

SQL Server 2014-如何删除空记录

[英]SQL Server 2014 - How to remove Null Records

我有一个表,其中包含有关某个日记的类条目的数据。 我正在尝试按周分开结果,以便每周获得这些条目的计数。 但是当我按天分组时,我也会得到空值。 我想省略带有空值的记录。 我怎么做?

我写了以下代码:

SELECT Year(JournalDate) AS YY
      ,Month(JournalDate) AS MM
      ,FromClass
      ,ToClass
      ,(SELECT Count(JournalID) 
        WHERE Day(JournalDate) >= 1 AND Day(JournalDate)=7) AS CountWeek1
      ,(SELECT Count(JournalID) 
        WHERE Day(JournalDate) >= 8 AND Day(JournalDate)=14) AS CountWeek2
      ,(SELECT Count(JournalID) 
        WHERE Day(JournalDate) >= 15 AND Day(JournalDate)=21) AS CountWeek3
      ,(SELECT Count(JournalID) 
        WHERE Day(JournalDate) >= 22 AND Day(JournalDate)=28) AS CountWeek4
      ,(SELECT Count(JournalID) 
        WHERE Day(JournalDate) >= 29 AND Day(JournalDate)=31) AS CountWeek5


  FROM [tblJournal]

  WHERE [JournalDate] >= '2016-09-01 00:00:00.000'
    AND FromClass <> ToClass
    --AND CountWeek1 IS NOT Null

  GROUP BY Year(JournalDate), Month(JournalDate), Day( JournalDate), FromClass, ToClass

  ORDER BY YY, MM, FromClass, ToClass

但是我也得到了Null值。 我想删除空值。

YY  MM  FrClass ToClass CntWk1  CntWk2  CntWk3  CntWk4  CntWk5
2016    9   1   2   NULL    NULL    NULL    NULL    NULL
2016    9   1   2   NULL    NULL    NULL    NULL    NULL
2016    9   1   2   NULL    NULL    NULL    NULL    NULL
2016    9   1   2   NULL    NULL    NULL    NULL    NULL
2016    9   1   2   NULL    20      NULL    NULL    NULL
2016    9   1   2   NULL    NULL    NULL    NULL    NULL
2016    9   1   2   NULL    NULL    NULL    NULL    NULL
2016    9   1   2   NULL    NULL    NULL    NULL    NULL
2016    9   1   2   NULL    NULL    NULL    NULL    NULL
2016    9   1   2   NULL    NULL    NULL    NULL    NULL
2016    9   1   2   NULL    NULL    NULL    NULL    NULL
2016    9   1   2   12      NULL    NULL    NULL    NULL
2016    9   1   2   NULL    NULL    NULL    NULL    NULL
2016    9   1   2   NULL    NULL    NULL    NULL    NULL
2016    9   1   2   NULL    NULL    NULL    NULL    NULL
2016    9   1   2   NULL    NULL    NULL    NULL    NULL
2016    9   1   2   NULL    NULL    29      NULL    NULL
2016    9   1   2   NULL    NULL    NULL    NULL    NULL
2016    9   1   2   NULL    NULL    NULL    NULL    NULL
2016    9   1   2   NULL    NULL    NULL    25      NULL

如何省略具有NULL值的记录?

编辑:
所以我实际上希望我的结果看起来像这样:

YY  MM  FrmCls  ToClsWk1    Wk2 Wk3 Wk4 Wk5
2016    9   1   2   12  20  29  25  0
2016    9   1   3   2   1   6   0   0
2016    9   1   4   0   1   2   0   0
2016    9   2   1   0   3   0   2   0
2016    9   2   3   74  46  84  54  0
2016    9   2   4   0   0   8   5   0
2016    9   3   2   0   813 0   0   0

将上面的数据放入临时表中。 之后,您可以通过按年,月等汇总数据来查询结果,如下所示:

SELECT YY, MM, FrClass,ToClass,SUM(cntwk1),SUM(cntwk2),SUM(cntwk3),SUM(cntwk4),SUM(cntwk5)
FROM #data
GROUP BY YY, MM, FrClass,ToClass

这个怎么样

select * from 
(
SELECT Year(JournalDate) AS YY
      ,Month(JournalDate) AS MM
      ,FromClass
      ,ToClass
      ,isnull((SELECT Count(JournalID) 
        WHERE Day(JournalDate) >= 1 AND Day(JournalDate)=7),0) AS CountWeek1
      ,isnull((SELECT Count(JournalID) 
        WHERE Day(JournalDate) >= 8 AND Day(JournalDate)=14),0) AS CountWeek2
      ,isnull((SELECT Count(JournalID) 
        WHERE Day(JournalDate) >= 15 AND Day(JournalDate)=21),0) AS CountWeek3
      ,isnull((SELECT Count(JournalID) 
        WHERE Day(JournalDate) >= 22 AND Day(JournalDate)=28),0) AS CountWeek4
      ,isnull((SELECT Count(JournalID) 
        WHERE Day(JournalDate) >= 29 AND Day(JournalDate)=31),0) AS CountWeek5


  FROM [tblJournal]

  WHERE [JournalDate] >= '2016-09-01 00:00:00.000'
    AND FromClass <> ToClass

  GROUP BY Year(JournalDate), Month(JournalDate), Day( JournalDate), FromClass, ToClass
  ) x 
  where CountWeek1 +CountWeek2+CountWeek3+CountWeek4+CountWeek5 <> 0 

  ORDER BY YY, MM, FromClass, ToClass

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM