2015-05-21 37 views
1

我在這裏有問題。JOIN 2表SQL Server與組通過

我有2表想group by.

tbl_1 
NO userID users status branchID 
1 1 abc ok  2 
2 2 da ok  1 
3 3 fe  ok  3 
4 1 abc ok  1 
5 3 fe  ok  2 

tbl_2 
branchID branch 
2   medan 
1   jakarta 
3   batam 

我需要顯示在用戶和基於branchID分支的加入,我認爲這將通過使用組。怎麼做?

我想輸出不重複的用戶顯示,什麼時候做選擇。

output 
user branch 
abc medan,jakarta 
fe  medan,batam 

感謝

+0

你想要聚合什麼將做的工作? –

+2

添加您所需的輸出 –

+0

您想要的結果是什麼? –

回答

2

這個心不是很優雅,但基於您的數據和輸出

SELECT DISTINCT Users, 
      STUFF(( 
        SELECT ', ' + branch 
         FROM(
        SELECT DISTINCT Users, 
            branch 
         FROM #tbl_1 t1 
          INNER JOIN #tbl_2 t2 ON t1.branchID = t2.branchID) A 
         WHERE A.users = T.users 
         FOR XML PATH('')),1,2,'') AS Branches 
FROM #tbl_1 T; 
+0

很好的答案..非常感謝你... –

0

試試這個:

select t1.users , t2.branch 
    from tbl_1 t1 inner join tbl_2 t2 
    on t1.branchID=t2.branchID 
    group by t1.users , t2.branch; 
+0

嗨,你怎麼知道OP要分組「t1.users,t2.branch」 – Backtrack

+0

要從相應的表中獲取USERS和BRANCH。 .....如果我在這裏不使用GROUP BY,那麼結果中會有重複。 –

+0

但你甚至可以用「狀態」對它進行分組..我的問題是OP沒有提到任何明確的。因此,請添加一個詞,說明您在考慮假設的情況下進行此操作。 – Backtrack

0
select distinct tbl_1.userID, tbl_1.users, tbl_1.status, tbl_1.branchID, tbl_2.branch 
from tbl_1 
left join tbl_2 
on tbl.branchID = tbl_2.branchID 

這將只顯示你所有具有不同價值的領域。

+0

有些解釋會很好。 – Nilambar