Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在单个字段中获取多个值_Sql_Sql Server - Fatal编程技术网

Sql 在单个字段中获取多个值

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

我有一个来自4个不同表的查询,我想将其中一个字段值合并为一个字符串,例如,我想要下一个查询结果

       **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