1

TSQL を使用して、SSMS 2012 でクエリを作成し、メジャーごとに charge_log_date の個別のカウントを計算する必要があります。この charge_log_date フィールドは smalldatetime (時間は「00:00:00」として格納されます) であるため、日数のみが重要です。

このデータセットは、メジャーごとに 1 つずつ、合計 5 つのスライサーで PowerPivot テーブルを設定するために使用されます。これらの措置のタイトルは次のとおりです。

payor_family, company_name, base_type, base_state, payor_code

ユーザーがこれらのスライサーのいずれかをクリックすると、この charge_log_day_count は、クリックされた日数/メジャーの個別の数をカウントする必要があります。そのため、1 つの payor_family のみをクリックし、他のスライサーをクリックしない場合、データセットにはその payor_family のみのカウントを含める必要があります。これは単純なケースです。ただし、複数のスライサーをクリックする場合は、選択した各スライサー メジャーのカウントをデータセットに含める必要があります。

これまでに行ったことは、これら 5 つのメジャーのそれぞれのカウントを格納するルックアップ テーブルを作成することでした。行ごとに 1 つのメジャー値があり、NULL は他の値を表します。

質問:
このテーブルをメイン データセットに結合して、関連するカウントのみを含めるにはどうすればよいですか? データを含むサンプル テーブルを次に示します。

create table #charge_log_dates 
(
payor_family varchar(5),
 company_name varchar(5),
 base_type varchar(5), 
base_state varchar(5), 
payor_code varchar(5), 
ct int
)

insert #charge_log_dates values('PF1',NULL,NULL,NULL,NULL,5)
insert #charge_log_dates values('PF2',NULL,NULL,NULL,NULL,10)
insert #charge_log_dates values('PF3',NULL,NULL,NULL,NULL,25)
insert #charge_log_dates values(NULL,'CN1',NULL,NULL,NULL,3)
insert #charge_log_dates values(NULL,'CN2',NULL,NULL,NULL,8)
insert #charge_log_dates values(NULL,'CN3',NULL,NULL,NULL,18)
insert #charge_log_dates values(NULL,NULL,'BT1',NULL,NULL,5)
insert #charge_log_dates values(NULL,NULL,'BT2',NULL,NULL,1)
insert #charge_log_dates values(NULL,NULL,'BT3',NULL,NULL,6)
insert #charge_log_dates values(NULL,NULL,NULL,'BS1',NULL,9)
insert #charge_log_dates values(NULL,NULL,NULL,'BS2',NULL,10)
insert #charge_log_dates values(NULL,NULL,NULL,'BS3',NULL,30)
insert #charge_log_dates values(NULL,NULL,NULL,NULL,'PC1',15)
insert #charge_log_dates values(NULL,NULL,NULL,NULL,'PC2',15)
insert #charge_log_dates values(NULL,NULL,NULL,NULL,'PC3',45)

SELECT * from #charge_log_dates

drop table #charge_log_dates

こちらが私のメインテーブルです。これは、1 つのスライサーのみを選択した非常に単純な場合もあれば、非常に複雑な場合もあることに注意してください。(実際には、このテーブルはpayor_family、company_name、base_type、base_state、およびpayor_codeでグループ化されているため、重複するべきではないのに、重複する値を持つ行がいくつかあることに気付きました)。

    create table #main (
payor_family varchar(5),
 company_name varchar(5),
 base_type varchar(5), 
base_state varchar(5), 
payor_code varchar(5), 
measure1 int,
measure2 int,
measure3 int
)

insert #main values('PF1',NULL,NULL,NULL,NULL,45,14,18)
insert #main values('PF2',NULL,NULL,NULL,NULL,52,34,13)
insert #main values('PF3',NULL,NULL,NULL,NULL,10,14,12)
select * from #main
truncate table #main

insert #main values(NULL,'CN1',NULL,NULL,NULL,9,9,18)
insert #main values(NULL,'CN2',NULL,NULL,NULL,13,9,18)
select * from #main
truncate table #main

insert #main values('PF1','CN2','BT3','BS3','PC1',41,14,18)
insert #main values('PF2','CN1','BT1','BS3','PC1',42,15,18)
insert #main values('PF3','CN1','BT3','BS3','PC1',43,16,18)
select * from #main
drop table #main

これは、出力が必要なものです。最高レベルから最も細かい階層までの階層は、payor_family、company_name、base_type、base_state、payor_code です。これは、payor_family のみが選択されている場合、一致する payor_family を含む行からのカウントのみが表示されることを意味します。ただし、payor_code は最も粒度が高いため、他のスライサーで何を選択したかに関係なく、一致する payor_code を含む行からカウントが取得されます。

payor_family    company_name base_type  base_state  payor_code  measure1    measure2    measure3    ct
PF1 NULL    NULL    NULL    NULL    45  14  18  5
PF2 NULL    NULL    NULL    NULL    52  34  13  10
PF3 NULL    NULL    NULL    NULL    10  14  14  25
NULL    CN1 NULL    NULL    NULL    9   9   18  3
NULL    CN2 NULL    NULL    NULL    13  9   18  8
PF1 CN2 BT3 BS3 PC1 41  14  18  15
PF2 CN2 BT1 BS3 PC1 42  15  18  15
PF3 CN2 BT3 BS3 PC1 43  16  18  15
4

1 に答える 1

0

代わりに PowerPivot でこれを行うことで、この問題を修正しました。助けてくれてありがとう。

于 2016-06-09T13:09:43.290 に答える