简体   繁体   中英

SQL Server 2014 - How to remove Null Records

I have a table that holds data about class entries for a certain journal. I'm trying to separate the results by week so I get a count of those entries per week. But when I group by day, I get null values too. I want to omit records with Null Values. How do I do that?

I wrote the following code:

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

But I get Null values too. I want to remove Null Values.

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

How do I omit the records with NULL values?

EDIT:
So I would actually like my results to look like this:

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

Take your data above and insert into a temp table. After that you can query on your result by suming data by year, month, etc. like this:

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

how about this

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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