2009-09-01 24 views
1

G'day、SQL Serverレポート集計関数

SQL ServerのレポートとVb.Netの知識は現在エージング中です。

データベースの行の詳細レポートがあり、そのうちの1つがNULL可能です。私がしたいのは、結果の中のデータに単純な円グラフを表示して、値を持つ行の数とその数を表示することです。

データ系列の式にCount()集計を書き込んでフィルタ処理する方法を考えることができません。

例えば、

私は10000の行を持っていますが、2000はnullです。 2つの結果を示す円グラフ、2000年の小さなパイのチャンク、8000の大きなパイのチャンクが必要です。=Count(IsDbNull(Fields!TransactionID.Value))=Count(Not IsDbNull(Fields!TransactionID.Value))を試してみると同じ結果を2回送信するように見えます。結果セットは依然として真実と偽りで構成されているのと同じサイズです。

お気軽にお問い合わせください。

答えて

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(のようなものを使用したいですフィールド!TransactionID.Value)))

COUNTは、SQL Severと同じように値をカウントします。だから、:その後、SUMは、非NULLのカウントを与える減算、フルカウントを取るあなたのNULLの数(もちろんマイナス)を与える> SUM

  • - - > -1/0

    • にIsDBNullは真/偽を与えます
  • +0

    ないサイコロを使用することができます。すべての結果がゼロだったので、CInt変換は機能しません。 – Spence

    +0

    これは、NULLがないことを意味するでしょう... – gbn

    +0

    15000個あります。そして約200人はそうではない。 – Spence