查询这将在SQL Server返回表的具体形式2008
我有这样的一个表:查询这将在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值在同一个小区,但(与“”分隔)。我谷歌很多,但无法找到任何东西,因为这是一个非常具体的问题。
帮助非常感谢......我需要为这个结果如此糟糕的查询。
据,输出你正在寻找类似下面的一些事情可以帮助你:
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
这一个伎俩。谢了哥们。 – odemmah
子查询需要的相关条款:
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
子查询。
我知道我的东西的代码是正确的通过看你的,但像你说这不是主要问题。但是,我收到“无效的列名't2'”错误。我只是用我的表名改变了t的值。 t.t2.DptId是它引发的部分。 – odemmah
我投因为OP已尝试使用重新开'STUFF()'。他/她真的应该包括在讨论中的查询,但我们知道使用'FOR XML PATH'似乎并不成为问题在这里。 –