2017-10-11 43 views
0

我有這樣的一個表:查詢這將在SQL Server返回表的具體形式2008

IliskiId KulId DptId DosyaAdi 
------------------------------------ 
    2  332  66  4-92 
    3  332  66  9-50 
    4  332  73  13-96 
    5  332  73  15-19 
    6  334  71  10-11 
    7  334  72  35-14 

我需要一個查詢這會以這種形式返回就像這個特殊的例子:

KulId DptId DosyaAdi 
--------------------------------- 
332  66  4-92, 9-50 
332  73  13-96, 15-19 
334  71  10-11 
334  72  35-14 

這是怎麼回事這裏是我對分組的第一個頂部的同一行中的相同DptId價值和附加價值DosyaAdi ...可以有兩個以上的情況下,也像10個不同DosyaAdi值相同的特定DptId。

我嘗試過很多辦法,但總是得到了「子查詢返回多個值」的錯誤。我知道我需要在表格使用STUFF以組的所有DosyaAdi值在同一個小區,但(與「」分隔)。我谷歌很多,但無法找到任何東西,因爲這是一個非常具體的問題。

幫助非常感謝......我需要爲這個結果如此糟糕的查詢。

+0

我投因爲OP已嘗試使用重新開'STUFF()'。他/她真的應該包括在討論中的查詢,但我們知道使用'FOR XML PATH'似乎並不成爲問題在這裏。 –

回答

0

據,輸出你正在尋找類似下面的一些事情可以幫助你:

SELECT DISTINCT 
     T.KulId, 
     T.DptId, 
     STUFF(
      (
       SELECT ','+DosyaAdi 
       FROM <table_name> 
       WHERE KulId = T.KulId 
         AND DptId = T.DptId FOR XML PATH('') 
      ), 1, 1, '') DosyaAdi 
FROM <table_name> T; 

輸出:

KulId DptId DosyaAdi 
--------------------------------- 
332  66  4-92, 9-50 
332  73  13-96, 15-19 
334  71  10-11 
334  72  35-14 
+0

這一個伎倆。謝了哥們。 – odemmah

0

子查詢需要的相關條款:

select t.*, 
     stuff((select ', ' + DosyaAdi 
       from t t2 
       where t2.DptId = t2.DptId and t2.DosyaAdi = t.DosyaAdi 
       for xml path ('') 
      ), 1, 2, '' 
      ) as DosyaAdi 
from (select distinct DptId, DosyaAdi 
     from t 
    ) t; 

你也想確保你得到不同行,因此select distinct子查詢。

+0

我知道我的東西的代碼是正確的通過看你的,但像你說這不是主要問題。但是,我收到「無效的列名't2'」錯誤。我只是用我的表名改變了t的值。 t.t2.DptId是它引發的部分。 – odemmah