簡體   English   中英

SSRS 2008中的計數表達式

[英]Count expression in SSRS 2008

我遇到的情況是我有一個列名`NotifcationLog.Status。

狀態可以是3種類型:已接受,待處理和過期。 我需要統計所有通知狀態。

我用以下表達式創建了一個計算字段

=COUNT(IIF(Fields!NotificationStatus.Value="Accepted",1,Nothing))

當我嘗試將此計算字段添加到表中並對其進行預覽時,出現錯誤,指出“聚合,行號,運行值,先前和查找函數無法在計算字段表達式中使用”

我現在應該怎么辦 ??

您嘗試添加

 =IIF(Fields!NotificationStatus.Value="Accepted",1,0)

作為您的計算字段。 返回1或0,具體取決於狀態是否被接受。

然后在要使用它的地方,只需對計算字段SUM即可計數。

=Sum(Fields!NewCalculatedField.Value)

在將數據分組的表/矩陣等中使用它。

該錯誤似乎很簡單,您不能執行此操作的原因是,沒有任何分組就沒有意義。 想象以下數據集:

+-------+------------+
| ID    |   Status   |
|-------+------------+
|  1    |   Accepted |
|  2    |   Pending  |
|  3    |   Accepted |
|  4    |   Overdue  |
+-------+------------+

如果要在表達式中添加第三列,則該列將等於

SELECT  ID, Status, COUNT(CASE WHEN Status = 'Accepted' THEN 1 END)
FROM    T

如果沒有分組依據,則該語法無效。 您可以在計數表達式中添加報告字段,但不能在數據集中添加計算字段。 您嘗試制作的數據集如下:

+-------+------------+----------+
| ID    |   Status   | Accepted |
|-------+------------+----------+
|  1    |   Accepted |    2     |
|  2    |   Pending  |    2     |
|  3    |   Accepted |    2     |
|  4    |   Overdue  |    2     |
+-------+------------+----------+

對於所有行都重復該值實際上沒有任何意義,但是您可以在SQL中使用窗口函數來做到這一點:

SELECT  ID, 
        Status, 
        Accepted = COUNT(CASE WHEN Status = 'Accepted' THEN 1 END) OVER()
FROM    T;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM