以逗号分隔获取两列的值

时间:2020-07-30 00:28:57

标签: sql sql-server

我有一个查询,我需要在两个单独的列中获取查询结果,因为我正在做两个单独的查询

 Select STUFF((SELECT ',' + cast(Task.ID as varchar(100))
                from dbo.TaskRepeted 
                join dbo.Task on Task.id = TaskRepeted.Taskid
            where TaskID IN (1,2,3,4,5,6,7,8,9)
            FOR XML PATH('')) ,1,1,'') as Tasks 
    
    UNION ALL 
    
     Select STUFF((SELECT ',' + cast(CoreTask.ID as varchar(100))
                from dbo.TaskRepeted 
                join dbo.CoreTask on CoreTask.id = TaskRepeted.Taskid
            where TaskID IN (1,2,3,4,5,6,7,8,9)
            FOR XML PATH('')) ,1,1,'') as CoreTasks 
        
        

它仅显示一列为:任务

和两行:

第一行的数据为:3344,3,43,6,7,6,7,,34,3,443,434 第二行为空

但是我的数据应如下所示:

Tasks                               CoreTasks
3344,3,43,6,7,6,7,,34,3,443,434     0 (if null is coming, it should display me 0 else it will display the comma separated values)   

1 个答案:

答案 0 :(得分:0)

如果要两列,请不要使用union

 Select STUFF((SELECT ',' + cast(Task.ID as varchar(100))
                from dbo.TaskRepeted join
                     dbo.Task on Task.id = TaskRepeted.Taskid
            where TaskID IN (1,2,3,4,5,6,7,8,9)
            FOR XML PATH('')) ,1,1,'') as Tasks ,
        STUFF((SELECT ',' + cast(CoreTask.ID as varchar(100))
                from dbo.TaskRepeted join
                     dbo.CoreTask on CoreTask.id = TaskRepeted.Taskid
            where TaskID IN (1,2,3,4,5,6,7,8,9)
            FOR XML PATH('')) ,1,1,'') as CoreTasks