使用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路徑功能,但無濟於事(我沒有蜜蜂n因爲有大量的代碼,所以試着調整)。
我試圖得到以下
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,'')
這裏是我的最新嘗試。我添加了一個新帖子,因爲我沒有意識到編輯會再次將它移動到列表頂部......我想我需要另一個子查詢,但不知道在哪裏以及如何將它與其他兩個查詢綁定。
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
當我嘗試我得到多行或所有的零件代碼。要嘗試添加查詢主後 – user1023993
任何人都可以看到爲什麼上面的解決方案不工作在子查詢添加到原始文章? – user1023993