2013-12-16 4 views
2

У меня есть запрос из 4-х различных таблиц, и я хочу, чтобы Concat одно из значений полей в одной строке, например, я хочу следующий результат запросаПолучить несколько значений в одном поле

 **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,'') 

но я не смог найти правильный способ его интеграции в основной запрос.

+0

Это вид на линии, так что вы должны будете его псевдоним. Можете ли вы опубликовать, как вы пытались его интегрировать? Вы получаете синтаксическую проблему или просто неожиданные результаты? – janarde

+2

** Это проблема с презентацией **, поэтому ее следует обрабатывать с помощью вашего уровня представления, например. отчет, веб-страницу и т. д. – gvee

ответ

0

Try интеграции в запросе так:

(select STUFF(
     (select ',' + CAST(FileName as nvarchar) 
      from [Tfs_DefaultCollection].[dbo].[tbl_Attachment] 
      group by FileName 
      for xml path('') 
     ),1,1,'')) AS FileName 
0
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 
Смежные вопросы