各顧客に の複数の顧客グループを持つ顧客のリストがあります。例えば、単一の顧客は、 から1つのグループまで6つまでの異なるグループを持つことができます。SQL Serverの別のフィールドのオプションのシーケンスに基づいて顧客のリストを取得する2014
customerテーブルには、Dependentのリストと各DependentのTitleも含まれています。私はすべての顧客のために、すべての顧客グループ、CustGroupとタイトルによって優先順位に基づいて、単一の依存とタイトルを取得する必要があり
CustId CustName CustGroup Dependent Title
1 Mike A Sarah SP
1 Mike A Mitch SN
1 Mike A Debra DT
1 Mike A Conner SIL
1 Mike B Sarah SP
1 Mike B Mitch SN
1 Mike B Debra DT
2 Mark A Hamlin BT
2 Mark A Ritchie SN
2 Mark B Hamlin BT
2 Mark B Ritchie SN
3 Carrie A Aaron CR
3 Carie A Simon CR
3 Carie A Crane NP
3 Carrie B Aaron CR
3 Carrie B Simon CR
3 Carrie B Crane NP
3 Carrie C Aaron CR
3 Carrie C Simon CR
3 Carrie C Crane NP
:
これは次のようにテーブルが見えるものです。同じタイトルの複数の扶養家族が存在する可能性があります。その場合、すべての扶養家族を引っ張ります。
CustGroup Aの場合、タイトルがSPの場合、まずDependentを引き出します。 SPがなければ、SNを引く。 SNがなければDTを引きます。それら3つのタイトルのいずれも存在しない場合は、それを空白のままにします。
CustGroup Bの場合、タイトルがDTの場合、まずDependentをプルします。 DTがなければ、CRを引く。それらの2つのタイトルのどちらもない場合は、それを空白のままにします。
CustGroup Cの場合、タイトルがSILの場合、まずDependentを取得します。 SILがない場合は、DTを引き出します。それらの2つのタイトルのどちらもない場合は、それを空白のままにします。すべてのヘルプは大歓迎されます
CustId CustName CustGroup Dependent Title
1 Mike A Sarah SP
1 Mike B Debra DT
2 Mark A Ritchie SN
2 Mark B <blank> <blank>
3 Carrie A <blank> <blank>
3 Carrie B Aaron CR
3 Carrie B Simon CR
3 Carrie C <blank> <blank>
:
だから、期待される出力は次のようになります。
ありがとうございました。
編集:
私はこのコードと私は期待していたものに、その近くを試してみましたが、どのように私は空白を実装していますか?
Select * from
(
Select *, ROW_NUMBER() OVER (PARTITION BY CustID, CustGroup order by RowNum asc) as TitleRowNum
from
(
Select
CustId, CustName, CustGroup, [Dependent], Title,
case
when CustGroup = 'A' and Title = 'SP'
then 1
when CustGroup = 'A' and Title = 'SN'
then 2
when CustGroup = 'A' and Title = 'DT'
then 3
when CustGroup = 'B' and Title = 'DT'
then 1
when CustGroup = 'B' and Title = 'CR'
then 2
when CustGroup = 'C' and Title = 'SIL'
then 1
when CustGroup = 'C' and Title = 'DT'
then 2
else 4 end as RowNum
from GroupContactTest
) table1
) table2
where TitleRowNum = 1
order by CustId, CustGroup;
これは学校からの割り当てのようです。何を試しましたか? –
新しいCustグループがある場合はどうなりますか?それはどのような命令でしょうか?あなたのテーブルデザインはこれにうまく対応していません。 Group、title、sortrankを保持するさらなるルックアップテーブルを作成することは可能ですか? – SEarle1986
可能なCustGroupは7つしかありません(A、B、C、K、M、V、Y)。すべての顧客は1〜7つのCustGroupsを持つことができます。すべての顧客は、各グループごとに1〜10人の扶養家族を持つことができ、そのうちいくつかは同じタイトルを持つことができます。必要に応じて、ルックアップ値を保持するテーブルを作成することができます。 –