MS SSRSを使用しながら、グループ内のサブグループのすべての最初の行の値を要約するには?
-
26-09-2019 - |
質問
私たちのDBで、我々は持っている:(X手段は気にしない)
GID UID COST
================================
A 1 100
A 1 x
A 2 200
A 2 x
B 3 330
B 3 x
などの外観に必要な顧客のレポート:
UID COST
================================
[Group - A]
1 100
1
2 200
2
---Subtotal: 300
[Group - B]
3 330
3 x
---Subtotal: 330
======Total: 630
私はSSRSレポートの2グループをしました、1は、GIDのグループで、もう一つはUIDのグループである、と私はGIDのグループのUIDのすべての最初のコストを要約する多くの方法を試してみました。しかし、誰成功ます。
Crystalレポートでこれを行う場合は、、我々はそれを達成するために、「グループチェンジ式の」使用することができます。しかし、SSRSで、私は右のそれを行うには方法を見つけていない。
してください親切に助け!
解決
あなたは多分戻っSQLへ行くと、あなたは合計する列を作成する必要があります。
あなたの例を使用します:
select
GID,
UID,
Cost,
case when row_number() over(partition by GID,UID ORDER BY GID,UID,Cost) = 1 then Cost else 0 end as firstCostGroup
from
(
select 'a' as GID, 1 as UID, 100 as Cost
union
select 'a', 1, 101
union
select 'a', 2, 200
union
select 'a', 2, 201
union
select 'b', 3, 300
union
select 'b', 3, 301
) as rawdata
ROW_NUMBER関数は、SQL 2005以降が必要です。
SQL 2000を回避するには、
のようなものになるだろうdrop table #RawData
go
drop table #RawDataFirstRows
GO
create table #RawData
(
id int identity(1,1),
GID varchar(10),
UID int,
Cost int
)
insert into #RawData
select 'a' as GID, 1 as UID, 100 as Cost
union
select 'a', 1, 101
union
select 'a', 2, 200
union
select 'a', 2, 201
union
select 'b', 3, 300
union
select 'b', 3, 301
create table #RawDataFirstRows
(
id int
)
insert into #RawDataFirstRows
select
rd.id
from #RawData rd
where
rd.id = (select top 1 id from #RawData rw where rd.uid = rw.uid and rd.gid = rw.gid order by rw.gid,rw.uid)
select
rd.GID, rd.UID, rd.Cost, case when rw.id is null then 0 else 1 end as firstCostGroup
from
#RawData rd
left join
#RawDataFirstRows rw on rd.id = rw.id
なおにネストされたクエリ句は、それが#Rawdataテーブル内の行ごとに、そのクエリを呼び出すために有するように非常inffecientあります。仕事を、しかし、どのようなコストで取得します?
それはデータの生産レベルでのパフォーマンスの問題発生しない場合、あなたは大丈夫かもしれません。
所属していません StackOverflow