Sql 自联接中的多行

Sql 自联接中的多行,sql,Sql,我有这种格式的表格 Id QId ResourceId ModuleId SubProjId Comments 1 1 1 1 2 ffdg 1 1 2 2 1 1 2 dfgfdg 1 1 3 3 1 1 2 hgjhg 1 1 4 1 2 1 2 tryty 1 0 5 5 1 1 2 sdf 1 1 6 5 2 1 2 ghg

我有这种格式的表格

Id  QId   ResourceId ModuleId SubProjId  Comments 
1   1   1   1   2   ffdg    1   1
2   2   1   1   2   dfgfdg  1   1
3   3   1   1   2   hgjhg   1   1
4   1   2   1   2   tryty   1   0
5   5   1   1   2   sdf 1   1
6   5   2   1   2   ghgfh   1   0
7   7   2   1   2   tytry   1   0
8   3   2   1   2   rytr    1   0
我希望能有这样的结果

qid  ResourceId Comments   ResourceId  Comments

1   1   ffdg    2   tryty
3   1   hgjhg   2   rytr
我试过了

select distinct  A.qid,A.ResourceId,A.Comments,B.ResourceId,b.Comments
from dbo.#temp A inner join #temp B on A.QId=B.QId and A.[ModuleId]=B.[ModuleId] and a.[SubProjId]=b.[SubProjId]

但是没有找到任何运气,请帮助

您要将垂直数据转换为水平数据。因此,您需要创建一个透视表。你可以在这里找到更多细节

我希望这篇文章能对你有所帮助。解释得出结果的依据。@Nakul:-基本上A.qid、A.ResourceId和[ModuleId]是常见的。那么为什么ResourceId和Comments列在结果中存在两次?Rashmi Kant..从您发布的结果来看,我觉得您想要将垂直数据转换为水平数据,您可以使用透视表来完成。请转到pivot表引用链接,看看是否可以帮助您。从我的查询结果来看,它也会给出一些我不想要的额外行