2009-09-01 72 views
1

G'day,SQL Server報告集合函數

當談到SQL Server報告和我的Vb.Net知識正在老化時,我總共是n00b。

我有一個數據庫中的行的詳細報告,其中一列是可以爲空的。我想要做的是在結果中顯示一個簡單的餅圖來顯示有多少行有值,有多少行沒有值。

我無法弄清楚如何在數據系列的表達式中編寫Count()聚合以便過濾。

例如。

我有10000行其中2000有一個空。我想要一個餅圖,其中顯示了兩個結果,一個是2000年的小餅,另一個是8000年的餅。當我嘗試做=Count(IsDbNull(Fields!TransactionID.Value))=Count(Not IsDbNull(Fields!TransactionID.Value))時,它看起來會發送兩次相同的結果,即。結果集仍然是由trues和falses組成的相同大小。

乾杯您的幫助。

回答

2

由於您使用的是COUNT,因此您只是在計數值; IsDbNULL返回TRUE或FALSE,兩者都被計數。

嘗試做這行的非NULLS = SUM(IIF(ISNOTHING(領域!TransactionID.Value),0,1))和的NULL使用= SUM(IIF(ISNOTHING(領域!TransactionID的。值),1,0))

實際上,對於非NULL值,你可以只使用COUNT(字段!TransactionID.Value)

1

我會用這樣的

  • -sum(CINT(IsDBNull以便(領域!TransactionID.Value)))
  • COUNT(字段!TransactionID.Value)+ SUM(CINT(NOTIsDbNull( Fields!TransactionID.Value)))

COUNT按字面計數值,與SQL Sever相同。所以:

  • IsDBNull以便使真/假 - > -1/0 - > SUM,讓你空值的數量(當然減去)
  • 然後充分數,減去SUM給非NULL數
+0

沒有骰子。我認爲CInt轉換不起作用,因爲每個結果都是零。 – Spence 2009-09-01 06:53:36

+0

這應該表示沒有NULL ... – gbn 2009-09-01 08:26:07

+0

其中有15000個。還有大約200個不是。 – Spence 2009-09-01 11:16:33