簡體   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