SQL Serverを使用すると、次のテーブル/データがあります
CUS_VISIT
Cus_ID Cus_Vis_ID
1 01
1 02
2 01
と
CUS_EVENT
Cus_Event_ID Cus_ID Cus_Vis_ID
001 1 01
002 1 01
と
CUS_XREF
Cus_ID Cus_Event_ID Cus_Prt_ID Cus_Seq_No
1 001 1 1
1 001 2 1
と
CUS_PRT
Cus_ID Cus_Prt_ID Prt_Cd
1 1 1A
1 2 2A
私は多数のクエリを試しましたが、混乱を招くと思ったのでそれらを含めませんでした...それらのほとんどはxmlパス機能を使用しましたが、役に立ちませんでした(コードの膨大なリストがあるため、ピボットを試していません) )。
私は次のものを取得しようとしています
SQL RESULTS
Cus_ID Prt_Cd Cus_Vis_ID
1 1A,2A 1
私が最終的に何をするかは
SQL RESULTS
Cus_ID Prt_Cd Cus_Vis_ID
1 1A 1
1 2A 1
テーブルは次によってリンクされています...
CUS_VISIT.Cus_ID = CUS_EVENT.Cus_ID
CUS_VISIT.Cus_Vis_ID = CUS_EVENT.Cus_Vis_ID
CUS_VISIT.Cus_ID = CUS_XREF.Cus_ID
CUS_EVENT.Cus_Event_ID = CUS_XREF.Cus_Event_ID
CUS_XREF.Cus_Prt_ID = CUS_PRT.Cus_Prt_ID
CUS_XREF.Cus_ID = CUS_PRT.Cus_ID
CUS_XREF.Cus_Prt_ID = CUS_PRT.Cus_Prt_ID
ジョインを削除すると、目的のものをほぼ取得できますPrt_Cd
が、その訪問の部品コードだけでなく、顧客のすべての部品コード ( ) を取得します。
失敗したクエリを確認するのに役立つ場合、または何かを省略した場合は、申し訳ありませんがお知らせください. 助けてくれてありがとう。
--
これが私のサブクエリです
stuff((
select ',' + B.prt_cd
from CUS_PRT B
WHERE B.prt_cd = XREF.prt_cd -- this is killing me
and XREF.cus_id=B.cus_id and
-- some extra criteria i need but didn't think involved in my issue
B.prt_typ='1'
and B.valid_entry='Y' and B.cur_entry_ind='Y'
for xml path('')),1,1,'')
これが私の最新の試みです。編集すると再びリストの一番上に移動することに気づかなかったので、新しい投稿を追加しました...どこかに別のサブクエリが必要だと思いますが、それを他の2つのクエリにどこでどのように結び付けるかわかりません。
select distinct CUS_EVENT.cus_id, CUS_EVENT.cus_visit_id,
(Select CUS_PRT.prt_cd + ',' AS [text()]
From CUS_PRT, CUS_XREF
where
CUS_EVENT.cus_id=XREF.cus_id
and CUS_EVENT.cus_event_id = XREF.cus_event_id
and CUS_XREF.cus_id=CUS_PRT.cus_id
and CUS_XREF.cus_prt_id = CUS_PRT.cus_prt_id
and CUS_XREF.prt_seq_no ='1'
order by CUS_PRT.prt_cd
for XML PATH('')) [Codes]
from CUS_EVENT