Sql 在单个字段中获取多个值
我有一个来自4个不同表的查询,我想将其中一个字段值合并为一个字符串,例如,我想要下一个查询结果Sql 在单个字段中获取多个值,sql,sql-server,Sql,Sql Server,我有一个来自4个不同表的查询,我想将其中一个字段值合并为一个字符串,例如,我想要下一个查询结果 **BuildName ConfigurationName FileName Name RunIDMax** Build_20131213.5 Default configuration Screenshot2.png User1 354 Build_20131213.5 Default co
**BuildName ConfigurationName FileName Name RunIDMax**
Build_20131213.5 Default configuration Screenshot2.png User1 354
Build_20131213.5 Default configuration Screenshot1.png User1 354
将显示如下:
**BuildName ConfigurationName FileName Name RunIDMax**
Build_20131213.5 Default configuration Screenshot2.png, Screenshot1.png User1 354
我有以下疑问:
select *
from (select TestPlanName, TestCaseId, AreaPath, IterationPath, TestSuiteSuitePath, ResultTestCaseId, ResultTest, ResultOutcome, max(ResultDate) as MaxResultDate , BuildName, ConfigurationName, FileName, Name, ErrorMessage, max(TA.TestRunId) as RunIDMax
from
[Tfs_Warehouse].[dbo].[DimPerson] (nolock) AS DTRO inner join
[tfs_warehouse].dbo.TestResultView (nolock) a on a.ResultExecutedBySK = PersonSK inner join
[Tfs_DefaultCollection].[dbo].[tbl_Attachment] (nolock) AS TA ON a.TestRunId = TA.TestRunId inner join
[Tfs_DefaultCollection].[dbo].[tbl_TestActionResult] (nolock) AS TAR on TA.TestRunId = Tar.TestRunId
group by TestCaseId,TestPlanName, AreaPath, IterationPath, TestSuiteSuitePath, ResultTestCaseId, ResultTest, ResultOutcome, BuildName, ConfigurationName, FileName, Name, ErrorMessage)
AS b
where
ResultOutcome <> 'Never Run' and (BuildName IN (@BuildName) or @BuildName = null) and (TestPlanName In (@TestPlanName) or @TestPlanName = null)
and TestSuiteSuitePath is not null
and BuildName is not null order by RunIDMax desc
但是我找不到将其集成到主查询中的正确方法。尝试像这样集成到您的查询中:
(select STUFF(
(select ',' + CAST(FileName as nvarchar)
from [Tfs_DefaultCollection].[dbo].[tbl_Attachment]
group by FileName
for xml path('')
),1,1,'')) AS FileName
这是一个直列视图,因此您需要为其添加别名。你能发布你是如何尝试整合它的吗?您是否遇到语法问题,或者只是意外的结果?这是一个演示问题,因此应由您的演示层处理,例如报表、网页等。
(select STUFF(
(select ',' + CAST(FileName as nvarchar)
from [Tfs_DefaultCollection].[dbo].[tbl_Attachment]
group by FileName
for xml path('')
),1,1,'')) AS FileName
with TableCTe as
(select 'Build_20131213.5' BuildName, 'Default configuration' ConfigurationName, 'Screenshot2.png' FileName, 'User1' Name, 354 RunIDMax
union all
select 'Build_20131213.5', 'Default configuration', 'Screenshot1.png', 'User1', 354
)
,cte1 as
(
select name,
stuff((select ','+filename from TableCTe for xml path('') ),1,1,'')as filename
from TableCTe
group by name
)
,cte2 as
(select row_number() over(order by a.name )rn, a.BuildName,a.ConfigurationName,a.Name,a.RunIDMax,b.filename from TableCTe a
inner join cte1 b on a.Name=b.Name)
select * from cte2 where rn=1