SSRSは初めてです。トランザクションテーブルをcustomeridでグループ化し、customeridごとのトランザクション数をカウントしたいと思います。私はそれをすることができました。
しかし、その数で並べ替えたり、その数でフィルタリングしたりします。どうですか?
ありがとう!
SSRSは初めてです。トランザクションテーブルをcustomeridでグループ化し、customeridごとのトランザクション数をカウントしたいと思います。私はそれをすることができました。
しかし、その数で並べ替えたり、その数でフィルタリングしたりします。どうですか?
ありがとう!
行グループの並べ替えとフィルター処理を設定するには、行グループを右クリックします。
ここで、グループの並べ替えとフィルタリングのプロパティにアクセスできます。どちらも、カウント列の名前に基づいてルールを設定できるはずです。
レポートにトランザクションを表示する必要がない場合は、SSRS ではなく、クエリのデータベース レベルで集計を実行する必要があります。次の利点があります。
ORDER BY
基になるクエリの句に
最も一般的な/期待される値を入れることで、データ セットを「事前に並べ替える」ことができます。HAVING
集計クエリ
の句で使用できる「フィルター」パラメーターを持つことができます-- Will filter out any customers who have 2 or fewer transactions
DECLARE @Filter AS int = 2
;
SELECT
CustomerId
,COUNT(TransactionId)
FROM
Transactions
GROUP BY
CustomerId
HAVING
COUNT(TransactionId) > @Filter
それでもトランザクションを表示する必要がある場合は、クエリに列を追加して、次のように節 andCount()
を使用して実行します。OVER
PARTITION BY customerid
COUNT(transactions) OVER (PARTITION BY customerid) AS CustomerTransactionCount
非常に単純なテーブル構造を想定すると、次のようなクエリ構造になります。
SELECT
CustomerId
,TransactionId
,TransactionAttribute_1
,TransactionAttribute_2
,TransactionAttribute_3
.
.
.
,TransactionAttribute_n
,COUNT(TransactionId) OVER (PARTITION BY CustomerId) AS CustomerTransactionCount
FROM
Transactions
CustomerTransactionCount
SSRS 内の任意の行/列グループでフィルターおよび並べ替え列として使用できます。
OVER (PARTITION BY...)
ため、句では使用できません。これは、すべてのフィルタリングを SSRS で実行する必要があることを意味します。HAVING
GROUP BY
--Filter variable
DECLARE @Filter AS int = 2
;
WITH DataSet_CTE AS
(
-- Build the data set with transaction information and the aggregate column
SELECT
CustomerId
,TransactionId
,TransactionAttribute_1
,TransactionAttribute_2
,TransactionAttribute_3
.
.
.
,TransactionAttribute_n
,COUNT(TransactionId) OVER (PARTITION BY CustomerId) AS CustomerTransationCount
FROM
Transactions
)
-- Filter and return data
SELECT *
FROM DataSet_CTE
WHERE CustomerTransationCount > @Filter
--Filter variable
DECLARE @Filter AS int = 2
;
SELECT
*
FROM
(
-- Build the data set with transaction information and the aggregate column
SELECT
CustomerId
,TransactionId
,TransactionAttribute_1
,TransactionAttribute_2
,TransactionAttribute_3
.
.
.
,TransactionAttribute_n
,COUNT(TransactionId) OVER (PARTITION BY CustomerId) AS CustomerTransationCount
FROM
Transactions
) AS DataSet
WHERE
DataSet.CustomerTransationCount > @Filter