2012-11-01 36 views
0

使用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 

回答

0

我通過創建,只是關聯到事件的prt_cd,然後在此基礎上一個結合(符連接),另一種觀點認爲一個視圖解決了這個問題,所有的prt_cd小號對於一個事件......不知道爲什麼,但從來沒有能夠找到一個方法來完成一個查詢。

1

您需要在您的select中執行一個子查詢,以便將來自多行的值連接到一行中。

解決的辦法看到這個答案:https://stackoverflow.com/a/545672/745511

+0

當我嘗試我得到多行或所有的零件代碼。要嘗試添加查詢主後 – user1023993

+0

任何人都可以看到爲什麼上面的解決方案不工作在子查詢添加到原始文章? – user1023993