将多行转换为一行-SQL
我正在尝试将“test”列放在同一行中。我使用的是将多行转换为一行-SQL,sql,sql-server,tsql,string-aggregation,Sql,Sql Server,Tsql,String Aggregation,我正在尝试将“test”列放在同一行中。我使用的是Stuff(),但是,似乎“test”列正在遍历所有的qID 我错过了什么 SELECT DISTINCT qID, STUFF(( select ',' + B.text from tbl B where B.qID=qID order by B.text
Stuff()
,但是,似乎“test”列正在遍历所有的qID
我错过了什么
SELECT DISTINCT qID,
STUFF((
select ',' + B.text
from tbl B
where B.qID=qID
order by B.text
for xml path('')
),1,1,'') as test
FROM tbl
WHERE qID in (2258060,2296222)
GROUP BY qID
表中缺少别名
SELECT DISTINCT qID,
STUFF((
select ',' + B.text
from tbl B
where B.qID=A.qID
order by B.text
for xml path('')
),1,1,'') as test
FROM tbl A
WHERE qID in (2258060,2296222)
GROUP BY qID
通过使用表名本身,也可以在外部查询中不使用别名
SELECT DISTINCT qID,
STUFF((
select ',' + B.text
from tbl B
where B.qID=tbl.qID --Table name before qid here
order by B.text
for xml path('')
),1,1,'') as test
FROM tbl
WHERE qID in (2258060,2296222)
GROUP BY qID
表上缺少别名
SELECT DISTINCT qID,
STUFF((
select ',' + B.text
from tbl B
where B.qID=A.qID
order by B.text
for xml path('')
),1,1,'') as test
FROM tbl A
WHERE qID in (2258060,2296222)
GROUP BY qID
通过使用表名本身,也可以在外部查询中不使用别名
SELECT DISTINCT qID,
STUFF((
select ',' + B.text
from tbl B
where B.qID=tbl.qID --Table name before qid here
order by B.text
for xml path('')
),1,1,'') as test
FROM tbl
WHERE qID in (2258060,2296222)
GROUP BY qID
请不要要求OP接受答案,除非你有理由相信他们是新的,并且不知道如何接受。@DaleK我使用他和我的查询测试了结果。我不是说你的答案不正确,我是说让OP接受答案不合适。谢谢。成功了。你知道为什么在没有别名的情况下,它似乎可以检索所有内容吗?@Camus在你的查询B.qID=qID中返回的总是true,就好像1=1,它没有做任何事情一样。这类似于B.qID=B.qID。请不要要求OP接受答案,除非你有理由相信他们是新的并且不知道如何接受。@DaleK我使用他和我的查询测试了结果。我不是说你的答案不正确,我是说让OP接受答案是不合适的。谢谢。成功了。你知道为什么在没有别名的情况下,它似乎可以检索所有内容吗?@Camus在你的查询B.qID=qID中返回的总是true,就好像1=1,它没有做任何事情一样。它类似于B.qID=B.qID。