日期:2014-05-17  浏览次数:20504 次

SQL 联查语句
表A
QID   QTITLE  TYPE  ANSWER
 Q1    AAAA     3    aaaa
 Q2    BBBB     5    bbbb
 Q3    CCCC     6    cccc
 Q3    CCCC     6    dddd
 Q4    EEEE     7    eeee
 Q4    EEEE     7    ffff
 Q5    GGGG     3    gggg
-----------------------------------------------------
需要通过查询得到的结果集
QID   QTITLE  TYPE  ANSWER
 Q1    AAAA     3    aaaa
 Q2    BBBB     5    bbbb
 Q3    CCCC     6    cccc、dddd
 Q4    EEEE     7    eeee、ffff
 Q5    GGGG     3    gggg
说明:
      TYPE=3或5,按QID分组每组只会有一条记录
      TYPE=6或7  按QID分组每组至少会有一条以上的记录,要考虑只有一条记录的情况,也要考虑多条记录的情     况,如果有多条记录就要将ANSWER字段的值拼接在一起。SQL语句要如何实现 
SQL

------解决方案--------------------
CREATE TABLE #temp(QID VARCHAR(10),QTITLE VARCHAR(10), TYPE INT, ANSWER VARCHAR(10))
INSERT #temp
select ' Q1', 'AAAA', ' 3', 'aaaa' union all
select ' Q2', 'BBBB', ' 5', 'bbbb' union all
select ' Q3', 'CCCC', ' 6', 'cccc' union all
select ' Q3', 'CCCC', ' 6', 'dddd' union all
select ' Q4', 'EEEE', ' 7', 'eeee' union all
select ' Q4', 'EEEE', ' 7', 'ffff' union all
select ' Q5', 'GGGG', ' 3', 'gggg'

SELECT QID, Qtitle, [Type],
anser = STUFF(((SELECT '、'+answer FROM #temp b WHERE  a.qid = b.qid FOR XML PATH(''))),1,1,'')
FROM #temp a
GROUP BY QID, Qtitle, Type
/*
QID Qtitle Type anser
 Q1 AAAA 3 aaaa
 Q2 BBBB 5 bbbb
 Q3 CCCC 6 cccc、dddd
 Q4 EEEE 7 eeee、ffff
 Q5 GGGG 3 gggg
*/

------解决方案--------------------
可以参考这篇帖子
http://bbs.csdn.net/topics/320053430
------解决方案--------------------
百度上查一下"sql列转行"的相关问题
------解决方案--------------------
一楼正解