合并后无法在SQL Server中命名列

合并后无法在SQL Server中命名列,sql,sql-server,Sql,Sql Server,我无法以视图的形式保存下面的结果,因为第二列没有名称,我无法向其添加as名称,或者它不再工作 下面的语句像行一样合并,并在有多个结果的地方连接不同的值,与银行详细信息有关 select [Pers#No#], stuff(( Select distinct ', ' + cast( [Bank Account] as varchar(20) ) + ' ' + cast( [B

我无法以视图的形式保存下面的结果,因为第二列没有名称,我无法向其添加as名称,或者它不再工作

下面的语句像行一样合并,并在有多个结果的地方连接不同的值,与银行详细信息有关

select [Pers#No#], 
        stuff(( Select distinct ', ' + 
                        cast( [Bank Account] as varchar(20) ) +  ' ' + 
                        cast( [Bank Keys] as varchar(20) )      
                FROM     [DATA].[dbo].[PA0009]                  as      S
                where   S.[Pers#No#] = T.[Pers#No#]
                For     XML PATH('')),1,1,''    )  
from    [DATA].[dbo].[PA0009]  
group by [Pers#No#] 

就我个人而言,我发现这一点要清楚得多,而且您还可以对每个[PersNo]值执行一次XMLPath


未测试

您应该为从子查询返回的列指定别名:

select [Pers#No#], 
        stuff(( Select distinct ', ' + 
                        cast( [Bank Account] as varchar(20) ) +  ' ' + 
                        cast( [Bank Keys] as varchar(20) )      
                FROM     [DATA].[dbo].[PA0009]                  as      S
                where   S.[Pers#No#] = T.[Pers#No#]
                For     XML PATH('')),1,1,''    )  as whatever
from    [DATA].[dbo].[PA0009]  
group by [Pers#No#] 

你确定吗?这对我很有用:

CREATE TABLE PA0009 ([Pers#No#] INT , [Bank Account] VARCHAR(10), [Bank Keys] VARCHAR(10))

SELECT [Pers#No#]
    ,stuff((
            SELECT DISTINCT ', ' + cast([Bank Account] AS VARCHAR(20)) + ' ' + cast([Bank Keys] AS VARCHAR(20))
            FROM  [PA0009] AS S
            WHERE S.[Pers#No#] = 132
            FOR XML PATH('')
            ), 1, 1, '')  AS X 
FROM  [PA0009]
GROUP BY [Pers#No#]
输出:

Pers#No#    X
----------- ---------

刚刚看到我需要将我的As移动到XML路径之后。。。。。 所以我把它写得太早了,没有以专栏的真正结尾命名。。。谢谢各位。如果这篇文章对其他人来说没有价值,我甚至可以删除它。。。我完全错过了

 select [Pers#No#],  
  (
 stuff(( Select distinct ', ' + cast( [Bank Account] as varchar(20) ) +  ' '      + cast( [Bank Keys] as varchar(20) )      

                        FROM [DATA].[dbo].[PA0009]          as      S

                     where          S.[Pers#No#] = T.[Pers#No#]

                     For            XML PATH('')),1,1,''    )     ) as           [Concatenate_Details]     
 from [DATA].[dbo].[PA0009]       T
 group by [Pers#No#] 

你把列别名放在哪里?在stuff之前的第一个括号中。将[Bank Keys]转换为varchar20后的第二个括号,然后是[ColumnA]显示当前和所需输出。请检查下面的答案。。。我需要将我的as[ColumnA]移动到XML路径部分之后。。。这才是专栏的真正结尾。。。。
 select [Pers#No#],  
  (
 stuff(( Select distinct ', ' + cast( [Bank Account] as varchar(20) ) +  ' '      + cast( [Bank Keys] as varchar(20) )      

                        FROM [DATA].[dbo].[PA0009]          as      S

                     where          S.[Pers#No#] = T.[Pers#No#]

                     For            XML PATH('')),1,1,''    )     ) as           [Concatenate_Details]     
 from [DATA].[dbo].[PA0009]       T
 group by [Pers#No#]