2

は、我々は持っている:(X手段は気にしない)MS SSRSの使用中にグループ内のサブグループのすべての最初の行の値を要約する方法はありますか?私たちのDBで

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上のグループであり、もう1つはUID上のグループであり、私はGIDのグループ内のUIDのすべての最初のコストを要約する多くの方法を試しました。しかし、成功はありません。

Crystalレポートでこれを行う場合は、「グループ変更式」を使用して達成することができます。しかしSSRSでは、私はそれを正しくする方法がないことを発見しました。

親切にお手伝いください!

+0

@マーク、私は、Stackoverflowには本当に、私は答えを評価しようとしましたが、システムは私にそうすることができません...>< –

+0

@マーク、私の "マーク/投票"状況についてのStackoverflow.com、そして今私は "答えを受け入れる"ことができます。どうもありがとう。 –

答えて

0

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あるでネストされたクエリ。仕事は終わったのですが、どんな費用がかかるのですか?

実稼働レベルのデータでパフォーマンスの問題が発生しない場合は、問題ありません。

+0

これは私が見つけた方法ですが、私たちがSQL Server 2000を使用しているので、これを会社の環境に適用することはできません。 –

+0

かなりハックはありませんが、仕事は終わりです。 – Nat

関連する問題